Java 代码实现:
1 @Test 2 public void ShellSort(){ 3 4 int[] array={9,8,7,6,5,4,3,2,1}; 5 int j,temp; 6 7 System.err.println(Arrays.toString(array)); 8 //gap为步长,每次取半 9 for(int gap=array.length/2;gap>0;gap/=2){ 10 for(int i=gap;i<array.length;i++){ 11 temp=array[i]; 12 //第三个循环为每个步长的分组进行排序,算法和插入排序一样 13 for(j=i;j>=gap && temp-array[j-gap]<0;j-=gap) 14 array[j]=array[j-gap]; 15 array[j]=temp; 16 System.err.println(Arrays.toString(array)); 17 } 18 } 19 }
算法的时间复杂度最坏为O(N2)
时间: 2024-10-13 01:25:02