高階排序 希爾排序

2021-08-30 20:23:43 字數 794 閱讀 6535

希爾排序

實際上是基於插入排序的,在插入排序中相比較的是相鄰的兩個元素,但是如果乙個很小的數在陣列的最右端,而他本應該是在最左端的,這樣的話所有中間的元素都要向右移動一位,並且執行了n次。希爾排序就是首先對大跨度的元素做比較並且進行移動,這樣的久相對有序了,再在這個基礎上進行普通的插入排序,效率就會高很多。

效率

快速排序》希爾排序》簡單排序

希爾排序在最壞的執行效率上和平均的執行效率上沒有差很多。

public class shellsort ;

shellsort.display(arr);

shellsort.shellsort(arr);

system.out.println("------------------------------");

shellsort.display(arr); }

public static void display(int thearray)

system.out.println(" "); }

public static void shellsort(int thearray)

while (h>0)

//將換後的臨時值替換位置

thearray[inner]=temp;

}//關鍵:這裡將元素基數變為1,也就將這個運算變為了插入排序。

h=(h-1)/n;

}

}

}

高階排序演算法 希爾排序

希爾排序 希爾排序是插入排序的優化版。回憶一下插入排序,假如插入排序執行到一半的時候,這時陣列左邊是已經排好序的,而右邊是還沒有排序的。如果有乙個很小的資料項恰好在右邊的位置,這時所有左邊已排好序的陣列都得往右移,騰出空位讓這個小的資料項插入。希爾排序是在插入演算法的基礎上再次降低交換的次數,以此獲...

高階排序之希爾排序

希爾排序原理 希爾排序 是d.l.shell與1959年提出的一種排序演算法,在這之前的排序演算法的時間複雜度基本都是o n 2 希爾演算法是第乙個打破這個時間複雜度的演算法。希爾排序是直接插入排序的公升級演算法,其核心思想是讓乙個序列分成若干個子串行,分隔方法是將相隔某個增量的記錄組成自序列,在子...

高階排序之希爾排序

希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於1959年提出而得名。這裡需要注意的是如果希爾增量按照減半的方式去遞減的話...