希尔排序:
建立在插入排序(稳定)的基础上,但是不稳定。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h>
2
3 int a[15]= {8,2,5,9,7,10,1,15,12,3};
4
5 int main()
6 {
7 int len=10;
8 int gap=1;
9 while(gap<len)
10 gap=gap*3+1; //gap=4;
11 while(gap>0) //gap=4、1
12 {
13 for(int i=gap;i<len;i++)//i=4-9
14 {
15 int kk=a[i];
16 int j=i-gap;
17 while(j>=0&&a[j]>kk)
18 {
19 a[j+gap]=a[j];
20 j-=gap;
21 }
22 a[j+gap]=kk;
23 }
24 gap/=3;
25 }
26 for(int i=0;i<10;i++)
27 printf("%d ",a[i]);
28 //1 2 3 5 7 8 9 10 12 15
29 return 0;
30 }