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

希尔排序

时间:2014-10-28 10:16:26      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   ar   for   sp   div   

我体会的希尔排序,是插入排序的的一种改进,对待排序的数组以一定的间隔划分成子数组,将这些子数组进行插入排序。随后间隔减小,划分新的子数组,插入排序。直至间隔为1,对完整的数组进行插入排序。

贴出希尔排序的实现和插入排序的实现,可以进行对比。

 1 // Shell sort, can be treated as a evolution of insert sort.
 2 void
 3 ShellSort(int arr[], int len)
 4 {
 5     // a common way of choosing increment: len, len/2, ..., 1
 6     for (int increment = len/2; increment > 0; increment /= 2) {
 7         // insert sort of array consist of elements separated by increment
 8         for (int i = increment; i < len; i++) {
 9             int tmp = arr[i];
10             int j;
11             for (j = i; j >= increment && arr[j-increment] > tmp; j -= increment) {
12                 arr[j] = arr[j-increment];
13             }
14             arr[j] = tmp;
15         }
16     }
17 }
18 
19 // Insert sort
20 void
21 InsertSort(int arr[], int len)
22 {
23     for (int i = 1; i < len; i++) {
24         int tmp = arr[i];
25         int j;
26         for (j = i; j >= 1 && arr[j-1] > tmp; j--) {
27             arr[j] = arr[j-1];
28         }
29         arr[j] = tmp;
30     }
31 }

 

希尔排序

标签:style   blog   io   color   os   ar   for   sp   div   

原文地址:http://www.cnblogs.com/nipan/p/4056117.html

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