希尔排序

Posted oscarwin

tags:

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

 

 1 /************************************************************************/
 2 /* 希尔排序,称为增量排序更好记忆
 3 /* 增量选取为N/2,虽不是个好的增量,但是便于理解
 4 /************************************************************************/
 5 #include <stdio.h>
 6 
 7 void ShellSort(int * array, int size)
 8 {
 9     int Gap, i, j;
10     int tmp;
11     for(Gap = size / 2; Gap > 0; Gap /= 2)
12     {
13         for(i = Gap; i < size; i += Gap)
14         {
15             tmp = array[i];
16             for(j = i; array[j - Gap] > tmp && j > 0; j -= Gap)
17             {
18                 array[j] = array[j - Gap];
19             }
20             array[j] = tmp;
21         }
22     }
23 }
24 
25 
26 int main()
27 {
28     int Array[10] = {5, 45, 36, 48, 20, 17, 84, 201, 92, 54};
29     for (int index = 0; index < 10; ++index)
30     {
31         printf("%d    ", Array[index]);
32     }
33 
34     ShellSort(Array, 10);
35 
36     printf("\r\n");
37 
38     for (int index = 0; index < 10; ++index)
39     {
40         printf("%d    ", Array[index]);
41     }
42     return 0;
43 }

 

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

希尔排序

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

希尔排序图解与代码

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

希尔排序JAVA代码

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