插入排序-希尔排序
1 void ShellSort(int list[],int n)
2 {
3 int gap = n / 2;
4 while(gap){
5 int i,j,temp;
6 for(i = gap; i < n; i++)
7 {
8 temp = list[i];
9 if(temp < list[i-gap])
10 {
11 for(j = i - gap; j >=0 && temp < list[j]; j-=gap)
12 list[j+gap] = list[j];
13 list[j+gap] = temp;
14 }
15 }
16 gap = gap / 2;
17 }
18 }
基本思想:先对整个待排记录分个若干子序列,分别进行插入排序,等整个序列基本有序时再整体进行一次插入排序
L3:gap是用于分组的增量
L9-L14:组内的插入排序,在直接插入排序中,增量是1,这里增量是gap
不稳定排序

浙公网安备 33010602011771号