标签:
排序算法可以说是算法的入门以及算法学习阶段的基石,排序算法显得那么的基础又是非常重要的一种算法。排序算法常常作为一些高阶算法的数据处理中间过程在实际的问题处理中被应用的最为广泛,因此算法选将阶段就从八大排序算法开始。在本节内容中既可以看到一般性的比如插入排序,冒泡排序等基础算法又可以看到比如基数排序,位图排序,快速排序等等比较难理解的算法,算法之门从排序算法说起。
1.插入排序
插入排序算法的原理很简单,默认A中有一部分数据已经排好序了,后续只要从没有排好序的序列里面每拿出一个数字就在排好序的序列中从右向左依次寻找合适的位置进行放置就可以了插入排序伪代码 :A.length-1代表数列A的长度,时间复杂度 O(n^2) 使用场景:当所需要排序的数值规模比较小时使用该方法比较好
for j=1 to A.lengrh-1
key = a[j]
insert a[j] into the sorted sequence A[0,j-1]
i= j-1
while i>=0 and a[i] > key
a[i+1] = a[i]
i = i-1
a[i+1] = key
template <typename T> T INSERTION_SORT(T * A ,int& length) { if(NULL == A || length <=0) { printf("输入错误\n"); return -1; } int i_tmp = 0; int j_tmp = 0; T key = 0;
for(j_tmp=1;j_tmp<length;j_tmp++) { key = A[j_tmp]; i_tmp = j_tmp-1; while((i_tmp >=0) && (A[i_tmp] > key)) { A[i_tmp+1] = A[i_tmp]; i_tmp -= 1; } A[i_tmp+1] = key; } return 0; }
2.分治排序(未完待续)
标签:
原文地址:http://www.cnblogs.com/malc/p/5801024.html