shellsort

shell sort是insertion sort的一种,insertion sort每次只将元素移动一个位置,效率较低,shell sort采用h-sorted的方法,每次隔h个元素进行比较,这样每次元素就会移动h个位置,提高了效率。
推荐的h为3X+1;
其实最后h为1就相当于insertion sort,但是是在前面经过h-sort的基础上,也就是对partially sorted的数组进行insertion sort,效率更高。

public void shellSort(int[] a){
    int N = a.length;
    int h = 1;
    while(h=1){
        //h-sort the array
        for(int i = h;ih;j-=h){
                if(a[j]

shell sort的时间复杂度为O(N 3/2)

你可能感兴趣的:(shellsort)