首页 > 代码库 > 算法学习之希尔排序的简洁实现

算法学习之希尔排序的简洁实现

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)

算法学习之希尔排序的简洁实现