
算法
文章平均质量分 71
cbl709
这个作者很懒,什么都没留下…
展开
-
二分搜索
递归版本int binary_search(const int a[], int low,int up, const int key){ int mid=(low+up)/2; if(low>up) return -1; else { if(a[mid]==key) return mid; else if(a[mid]<key) return binary_sea原创 2013-06-18 14:25:43 · 788 阅读 · 0 评论 -
最大子数组算法
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。比如输入a[]={31,-41,59,26,-53,58,97,-93,-23,84},那么程序的输出为a[2...6]的和,即187。《编程珠玑》给出了一个时间复杂度为O(n)的扫描算法。代码非常简练,但得稍微思考一下才能明白。原创 2013-06-18 13:06:35 · 1042 阅读 · 0 评论 -
插入排序
插入排序的原理和排序扑克牌的原理一样。假设有n张牌,手中的牌已经排好顺序,每次从桌上新拿一张牌。每拿到一张牌都需要从右往左将它与手中的牌进行比较。由于插入需要增加一个存储空间,因此可以用一个临时变量key存储当前从桌子上拿到的牌。代码如下void insertion_sort(int a[], int n){ int i=0; int j=1; // a[j]~a[n-1]的原创 2013-06-18 16:39:41 · 615 阅读 · 0 评论 -
快速排序算法
快速排序使用了分治法,将数组分成两个部分,左边的部分小于等于主元大小,右边部分大于主元大小。inline void swap(int& a, int &b){ int tmp; tmp=a; a=b; b=tmp;}void qsort(int a[],int l, int u){ int m=l; int i; //主元为a[l] if(l<u) { //原创 2013-06-19 13:35:55 · 839 阅读 · 0 评论 -
ASM(active shape model)算法简介(一)
概要ASM是一种基于点分布模型(Point Distribution Model,PDM)的算法。在PDM中,外形相似的物体,例如人脸、人手、心脏、肺部等的几何形状可以通过若干关键特征点(landmarks)的坐标依次串联形成一个形状向量来表示。ASM算法需要通过人工标定的方法先标定训练集,经过训练获得形状模型,再通过关键点的匹配实现特定物体的匹配。ASM 的优点是 能根据训练数据对于参数的调节加原创 2015-05-29 18:37:54 · 15276 阅读 · 5 评论