码迷,mamicode.com
首页 > 编程语言 > 详细

希尔排序

时间:2017-06-02 15:47:53      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:amp   排序   class   while   插入   记录   span   直接插入排序   main   

算法:

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

 

希尔排序

标签:amp   排序   class   while   插入   记录   span   直接插入排序   main   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!