排序算法之希尔排序
2015-08-14 09:41
218 查看
希尔排序
基本思想
先将整个待排序的记录序列按照指定增量分割成为若干个子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。这里的增量选取目前还是一个数学难题,迄今为止没有人找到一种最好的增量序列。
其中的基本有序是指:小的关键字基本在前面,大的基本在后面, 不大不小的基本在中间,例如{2,13,,6,4,7,5,8,9}可以称得上基本有序了。而{1,5,9,3,7,8,2,4,6}这样的9在第三位,2在倒数第三位就谈不上基本有序了。
原理图
代码如下:
/**希尔排序*/ void shellSort(int a[],int aLength) { int i,j,k,temp; k = aLength/2; //k为增量 while (k>0) { for (i=k; i<aLength; i++) { temp = a[i]; for (j=i-k; j>=0; j = j-k) { if (a[j]>temp) { a[j+k] = a[j]; }else { break; } } a[j+k] = temp; } k = k/2; } }
以上就是希尔排序的简单介绍了,希望能够帮助到大家。
相关文章推荐
- 电子时钟
- Rank List
- oracle查看写法效率
- JSON 数据格式
- EAS BOS 实现发送消息
- Chapter 10 – Test
- 一个jsp的注册界面
- C#遍历Hashtable
- 003--映射文件详解
- Java研发书单
- [前端]利用a标签获取url里所需的内容
- 秘密:之所以不搞军事同盟,俄罗斯
- 570B. Simple Game Codeforces Round #316 (Div. 2)
- Hadoop实战之专利数据处理
- HDU 5386 Cover(暴力+逆推)——多校练习8
- linux进程小笔记
- 罗辑思维现象透析
- 树结构练习——判断给定森林中有多少棵树 SDUT 2129
- zoj2833Friendship
- 目标跟踪1