排序(4)希尔排序
来源:互联网 发布:msn软件 编辑:程序博客网 时间:2024/06/04 21:47
希尔排序又称为"缩小增量排序",是对插入排序的一种改进。
基本思想:设定一个元素间隔增量gap,将参加排序的序列按这个间隔数gap从第一个元素开始依次分成若干个子序列。在子序列中再用其他排序方法,然后缩小增量gap,重新将整个序列按照新的间隔数gap进行划分,再分别对每个子序列进行排序。如此将“缩小增量gap——划分序列——将每个子序列排序”的操作进行下去,直到间隔数增量gap=1为止。
一般情况下,当增量gap缩小到1时,序列几乎都已经按值有序,不需要进行较多的元素移动就能达到排序的目的。
如何选取gap值? 常用且效果很好的gap值取法:首先gap取值为序列长度的一半。而在后续的排序过程中,后一趟排序的gap取值为前一趟排序gap取值的一半即可。
算法描述:
void shellsort(keytype k[],int n) {int i,j,flag,gap=n;keytype tmp;while(gap>1) {gap =gap/2;do {flag=0;for(i=1;i<=n-gap;i++) {j=j+gap;if(k[i]>k[j]) {tmp = k[i];k[i]=k[j];k[j]=tmp;flag=1;}}}while(flag!=0);}}
阅读全文
0 0
- 排序(4)希尔排序
- (4)希尔排序
- 排序4:插入排序(希尔排序)
- 排序(希尔排序)
- 排序(4)——希尔排序
- 排序算法4 希尔排序
- 排序篇(4)--希尔排序
- 排序(之希尔排序)
- Shell排序(希尔排序)
- Shell排序(希尔排序)
- 排序(二):希尔排序
- 数据结构(排序)---希尔排序
- 排序(二)----希尔排序
- 排序(2)---希尔排序
- 排序:希尔排序(算法)
- 排序(四):希尔排序
- shell排序(希尔排序)
- 4-希尔排序ShellSort
- 1.11编程基础之二分查找 04:网线主管
- RxBus进阶------基于RxJava2.x实现以注解的方式传递消息
- MYSQL常用 存储引擎简述
- 【unity3d学习笔记】unity中创建全局变量
- codeforces——230A——Dragons
- 排序(4)希尔排序
- c# winform 反射
- error: could not create '/usr/local/lib/python2.7/dist-packages/jieba': Permission denied
- 安卓学习笔记(八):进程和线程 跟着API指南来学习
- STL常用函数(转自TiWalker)
- Js字符串截取函数substring和substr
- php artsian命令大全
- Python-第三方库requests详解
- 畅通路问题之贪婪算法