本文共 911 字,大约阅读时间需要 3 分钟。
希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序
基本思想:
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
操作方法:
希尔排序的示例:
算法实现:
01.void print(int a[], int n ,int i){ 02. cout<<<":"; 03. for(int j= 0; j<8; j++){ 04. cout< <<" "; 05. } 06. cout<= 1 ){ 41. ShellInsertSort(a, n, dk); 42. dk = dk/2; 43. } 44.} 45.int main(){ 46. int a[8] = {3,1,5,7,2,4,9,6}; 47. //ShellInsertSort(a,8,1); //直接插入排序 48. shellSort(a,8); //希尔插入排序 49. print(a,8,8); 50.}
单处理增量序列:增量序列d = {n/2 ,n/4, n/8 .....1} n为要排序数的个数
即:先将要排序的一组记录按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。继续不断缩小增量直至为1,最后使用直接插入排序完成排序。
转载地址:http://abrfa.baihongyu.com/