希尔排序
2013-11-17 22:51
363 查看
希尔排序的思路是先将序列以某个增量分成几个子序列,然后对这些子序列分别进行插入排序,然后待序列基本有序之后进行整个序列的插入排序,代码如下:
希尔排序中gap的取值是个难点,迄今为止还没有找到一种较好的增量序列,希尔排序的最后一个增量必须是1,目的是对整个序列进行插入排序,由于记录是跳跃式的移动,所以希尔排序并不是一种稳定的排序,尽管如此,希尔排序突破了时间复杂度为o(n^2)的慢速排序时代(大话数据结构)。
对希尔序列较为详细的分析以及较为简洁的代码参考:http://blog.csdn.net/morewindows/article/details/6668714
希尔排序中gap的取值是个难点,迄今为止还没有找到一种较好的增量序列,希尔排序的最后一个增量必须是1,目的是对整个序列进行插入排序,由于记录是跳跃式的移动,所以希尔排序并不是一种稳定的排序,尽管如此,希尔排序突破了时间复杂度为o(n^2)的慢速排序时代(大话数据结构)。
void ShellSort(int Array[], int k) { int gap; int tmp; int j; int i; int n; for(gap = k/2; gap >=1; gap /=2) for(j = 0; j < gap; ++j) { for(i = j; i <=k-2*gap + j; i += gap) if(Array[i+gap] < Array[i]) { tmp = Array[i+gap]; for(n = i; Array > tmp&& n>=j; n -=gap) Array[n+gap] = Array ; Array[n+gap] = tmp; } } }
对希尔序列较为详细的分析以及较为简洁的代码参考:http://blog.csdn.net/morewindows/article/details/6668714
相关文章推荐
- Ubuntu 12.04环境下配置Postgresql和phppgadmin
- Nginx学习笔记---ngx_table_elt_t数据结构
- 如果IT技术按照兵种分类
- 【PAT1060】Are They Equal
- OpenCV实现的高斯滤波探究_1(《学习OpenCV》练习题第五章第三题ab部分)
- ARC的处理界限,至_bridge的衍生用法
- 关于位域的字节内存储顺序、字节对齐、字节序以及符号
- Android通过for循环批量发送短信
- IOS7手势识别
- hdu 4782 Beautiful Soupz
- winrar自解压释放路径详解
- 利用VC调用WinRAR解压和压缩文件
- Spring3.0 注解解释
- (程序员面试题)字符串处理之寻找最大不重复子串
- openwrt 编程器固件的制作方法
- PHP爱好者请坚定你们的信念!
- 安卓系统机顶盒中如何自由移动程序的焦点(没测试过)
- postconf 命令常用参数
- uva 10026 Shoemaker's Problem
- css优先权问题