算法
清风lsq
所发博客,都是个人学习记录,为了后续自己的回忆温习,有错请理解,要甄别。
展开
-
数组无序查找
在一组无序数列中,查找特定某个数值,并返回其位置pos。//在一组无序的数组中查找给定的数字,并返回下标,2016.5.26#include #include #include #define MAX 100void input(int num[])//实参传入的数组的首地址,而不是整个数组{ int i; srand((unsigned)time(NULL));//产生随机原创 2016-05-28 15:59:47 · 2124 阅读 · 0 评论 -
c++实现希尔排序
希尔排序(Shell Sort),也称为递减增量排序算法,是插入排序的一种高速而稳定的改进版本。希尔排序是基于插入排序的以下两点性质而提出改进方法的:1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;2.但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位。希尔排序的一般步骤为:1.先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成原创 2016-05-31 17:29:36 · 7984 阅读 · 4 评论 -
c++实现归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的基本思想:将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有原创 2016-05-31 17:35:08 · 444 阅读 · 0 评论 -
c++实现快速排序
1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod) ,分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。2、快排步骤:①分解: 在R[low..high]中任原创 2016-05-31 17:54:15 · 453 阅读 · 0 评论 -
c++实现堆排序
在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面:一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆,指的是前者。堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我们往往采用快速排序而不是堆排序。这是因为快速排序的一个好的实现,往往比堆排序具有更好的原创 2016-05-31 21:31:54 · 9472 阅读 · 0 评论 -
大数据面试宝典
教你如何迅速秒杀掉:99%的海量数据处理面试题原文 转自 http://blog.csdn.net/v_july_v/article/details/7382693作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却转载 2016-10-09 17:46:12 · 1433 阅读 · 0 评论 -
c++经典的垃圾回收算法介绍
我们知道c++程序设计里面的内存分配有三种方法:1.即全局变量和静态变量,这些都是存储在静态存储区,生存的周期就是程序运行的周期当程序结束,才释放这些存储空间。2.函数内部的局部变量,这些都是在栈上分配,生存周期是该变量所在的函数的运行周期,函数调用结束,这些存储空间自动释放。3.动态分配存储空间,在c语言里面我们是通过malloc,free来完成动态存储分配与释放,在c++里是通过n原创 2016-10-07 16:24:06 · 1848 阅读 · 0 评论 -
Java垃圾回收机制
今天刚好在学习c++的垃圾回收算法,顺便转了一篇Java的垃圾回收文章。第一篇http://www.cnblogs.com/laoyangHJ/articles/java_gc.html垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回转载 2016-10-07 16:50:55 · 268 阅读 · 0 评论 -
使用SSD检测训练自己的数据
上一篇博客讲到如何制作自己的训练数据集,这一篇博客讲讲如何使用SSD训练自己的数据.在训练数据做好后。训练程序为/examples/ssd/ssd_pascal.py,运行之前,我们需要修改相关路径代码,主要是训练路径的修改和关于自己数据集参数的一些修改.cd /examples/ssd先复制一份sd_pascal.py, 再打开,把里面的路径修改为自己的.具体有如下: tra原创 2017-12-03 22:39:16 · 1382 阅读 · 0 评论 -
c++实现插入排序
插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),Patience排序(Patience Sort)。下面介绍前两种:(一)直接插入排序原创 2016-05-31 17:26:39 · 1682 阅读 · 0 评论 -
c++实现选择排序
选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。平均时间复杂度:O(n2)空间复杂度:O(1) (用于交换和记录索引)稳定性:不稳定 (比如序列【5, 5原创 2016-05-31 17:17:18 · 624 阅读 · 0 评论 -
c++链式队列的实现
利用C++ 单向链表实现数据结构队列,仅仅是插入的时候在链表的尾部插入,取元素都是一样的,都从头部取。//2016.5.24 c++实现链式队列。#include using namespace std;template class qnode //链式节点类{ public: T data; qnode *next; };//struct qNode//{//原创 2016-05-25 18:17:41 · 1715 阅读 · 1 评论 -
c++数组实现循环队列
像栈一样,队列(queue)也是表。然而,使用队列时插入在一端进行而删除则在另一端进行,也就是先进先出(FIFO)。队列的基本操作是EnQueue(入队),它是在表的末端(叫做队尾(rear))插入一个元素;还有DeQueue(出队),它是删除(或返回)在表的开头(叫做队头(front))的元素。 同样,队列也可以由链表或数组实现,特点分析如下:(时空矛盾)链表:不需要设定原创 2016-05-23 19:01:54 · 5895 阅读 · 2 评论 -
c++实现数组栈和链式栈
用c++实现了数组栈和链式栈,栈是一种特殊的线性表,只能一头进出,在函数递归时应用挺大的。//这是数组栈#include#includeusing namespace std;#define size 20class stack{public: stack() { number = 0; } void push(int c) { if原创 2016-05-22 17:08:18 · 540 阅读 · 0 评论 -
c++实现单链表的操作
#include using namespace std;#define NULL 0class Node //节点类{public:Node(){};//构造函数Node(int n){ num = n; next = NULL; }//构造函数Node(int n, Node *p) { num = n; next = p; }void setNum(in原创 2016-05-21 17:46:46 · 477 阅读 · 0 评论 -
c++实现顺序表的操作
c++实现顺序表的一些操作,有三个文件。#include"Sequence.h"#includeusing namespace std;int main(){SeqList *L,*L1,*L2,*L3;L = Init_SeqList();L1 = Init_SeqList();L2 = Init_SeqList();L3 = Init_SeqList()原创 2016-05-21 17:49:39 · 755 阅读 · 0 评论 -
c++实现二分法查找
二分查找也属于顺序表查找范围,二分查找也称为折半查找。二分查找(有序)的时间复杂度为O(LogN)。那么什么是二分查找呢?二分查找的基本思想是, 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到找到为止。从二分原创 2016-05-28 16:02:53 · 14398 阅读 · 4 评论 -
c实现哈希查找
哈希查找,也称为散列查找(本文以哈希称呼)。哈希它是由一组key/value的键值对组成的集合,它就是应用了散列技术。那么,什么是哈希查找呢?在弄清楚什么是哈希查找之前,我们要弄清楚哈希技术,哈希技术是在记录的存储位置和记录的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值的映射f(key),若查找集合中存在这个原创 2016-05-28 16:09:20 · 3748 阅读 · 2 评论 -
c++实现冒泡排序
冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。对冒泡排序算法进行简单的优化,用一个标记来记录在一趟的比较过程中是否存在交换,如果不存在交换则整个数组原创 2016-05-31 17:10:47 · 47108 阅读 · 8 评论 -
基于Ubuntu16.04和caffe安装CPU版本的SSD检测框架
最近毕业设计涉及到了深度学习,所以学习下目前主流的检测框架SSD,本人笔记本没有gpu,所以只能安装CPU版本的ssd了.github链接:https://github.com/weiliu89/caffe/tree/ssdSSD是16年ECCV一篇深度学习目标检测的文章,详细知识可以百度或者谷歌,本文我们介绍如何实现。本文默认各位的机子已近安装好opencv, 配置编译过cpu版本的ca原创 2017-11-30 18:01:58 · 3601 阅读 · 1 评论