希尔排序(ShellSort),缩小增量排序,使用希尔增量时最坏运行时间O(n^2),不同的增量会对运行时间产生显著影响。
1 void shellsort(int *nums,int n) 2 { 3 int gap,i,j; 4 int tmp; 5 for(gap=n/2;gap>0;gap/=2) //改变增量 6 { 7 for(i=gap;i<n;i++) 8 { 9 tmp=nums[i]; 10 for(j=i;j>0;j-=gap) 11 if(tmp<nums[j-gap]) 12 nums[j]=nums[j-gap]; 13 else 14 break; 15 nums[j]=tmp; 16 } 17 } 18 }