无风无影

   ::  :: 新随笔  ::  ::  :: 管理

希尔排序

 1 public class ShellSort {
 2     public static void main(String[] args) {
 3         int [] array={101,11,2,1,19,88,77,66,99,66,11};
 4         shellSort(array);
 5         for(int i=0;i<array.length;i++){
 6             System.out.print(array[i]+" ");
 7         }
 8     }
 9 
10     private static void shellSort(int[] array){
11         for(int increment=array.length/2;increment>0;increment/=2){  //找到步节点做增量排序即可
12             for(int i=increment;i<array.length;i++){
13                 int temp = array[i];
14                 int j=i-increment;
15                 while(j>=0){
16                     if(temp<array[j]){
17                         array[j+increment]=array[j];
18                     }else{
19                         break;
20                     }
21                     j-= increment;
22                 }
23                 array[j+increment]=temp;
24             }
25         }
26     }
27 }
View Code

希尔排序最好时间复杂度和平均时间复杂度都是这里写图片描述,最坏时间复杂度为这里写图片描述

   空间复杂度都为:O(1);

希尔排序是不稳定的,它的空间开销也是O(1),时间开销估计在O(N3/2)~O(N7/6)之间

posted on 2018-05-28 17:24  NWNS-无风无影  阅读(154)  评论(0)    收藏  举报