首页 > 编程语言 > 详细

希尔排序

时间:2017-06-02 15:27:16      阅读:206      评论:0      收藏:0      [点我收藏+]

算法:

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. }  

 

希尔排序

原文:http://www.cnblogs.com/yl-saber/p/6933446.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!