JS排序演算法之希爾演算法

2021-08-16 05:53:51 字數 715 閱讀 9835

希爾演算法:

希爾演算法在原理上也是一種插入排序,在了解希爾演算法之前,必須了解插入排序;

原理:

希爾排序在插入排序的基礎上,將資料進行了分組,將原有的資料分為若干個子集,然後對每個子集進行排序,依次類推,不停地分割成子集,直到最後完全排序。

數列:[3,5,2,4,7,6,8,9,1]

先將整個數列以gap為基準進行分割為子集,對子集進行排序;(gap 一般為 math.floor(arr.length/2))

gap:4

分割後的子集為:3,7 ,1 5,6 2,8 4,9 是個子集

對子集進行排序後:1,3,7 5,6 2,8 4,9

數列為:[1,5,2,4,3,6,8,9,7]

修改gap的值 再次進行排序

gap:2

……..

直到gap的值為0則停止

js**實現:

var arr=[3,5,2,4,7,6,8,9,1];

var gap=math.floor(arr.length/2);

while(gap>0)

arr[j+gap]=temp;

}gap=math.floor(gap/2);

}輸出結果: [1, 2, 3, 4, 5, 6, 7, 8, 9]

排序演算法之希爾排序

希爾排序實際上是一種分治思想的插入排序。插入排序不說了,不清楚看這裡 分治思想,對增量為dk,dk遞減,開始很多小序列,最後為乙個大序列 相對直接插入排序,在希爾排序中,只不過增量不是1,而是dk 較好的增量序列是2 k 1,2 k 1 1,7,3,1,這樣可使shell排序時間複雜度達到o n 1...

排序演算法之希爾排序

希爾排序 shell sort 又稱為縮小增量排序,輸入插入排序演算法,是對直接排序演算法的一種改進。本文介紹希爾排序演算法。對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知 如果資料的本身就是有序的或者本身基本有序,那麼...

排序演算法之希爾排序

希爾排序,突破了 通過交換相鄰元素進行排序的任何演算法平均需要 n 2 的二次時間限制 通過比較相距一定間隔的元素來工作。使用乙個增量序列 h1 1,h2,ht,在使用乙個 增量h的一趟排序後,對於每乙個i滿足pdata i pdata i h 即此時序列是h排序的 各趟 比較所用的距離逐漸減小,直...