插入排序-希尔排序

 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

不稳定排序

posted @ 2011-11-10 11:07  windmissing  阅读(185)  评论(0)    收藏  举报