希尔排序

Posted yl007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序相关的知识,希望对你有一定的参考价值。

算法:

1、先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。

2、所有距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序。

3、取第二个增量d2<d1重复上述的分组和排序,

4、直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。

03.int main()  
04.{  
05.     const int n = 5;  
06.     int i, j, temp;   
07.     int gap = 0;  
08.     int a[] = {5, 4, 3, 2, 1};   
09.     while (gap<=n)  
10.     {  
11.          gap = gap * 3 + 1;  
12.     }   
13.     while (gap > 0)   
14.     {  
15.         for ( i = gap; i < n; i++ )  
16.         {  
17.             j = i - gap;  
18.             temp = a[i];               
19.             while (( j >= 0 ) && ( a[j] > temp ))  
20.             {  
21.                 a[j + gap] = a[j];  
22.                 j = j - gap;  
23.             }  
24.             a[j + gap] = temp;  
25.         }  
26.         gap = ( gap - 1 ) / 3;  
27.     }      
28. }  

 

以上是关于希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

希尔排序

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序JAVA代码

《算法》笔记 3 - 选择排序插入排序希尔排序