希爾排序也是十大經典排序演算法之一,其原理和**實現都不太好理解,要結合圖才容易理解(可以參考這裡)。
演算法步驟
它通過比較相距一定間隔的元素大小先排序,然後每次比較所用的距離隨著演算法的進行而減小,知道只比較相鄰元素的最後一趟排序位置,算是插入排序的公升級版。
**實現
public
class
shellsort
;int gap =1;
while
(gap < arr.length)
while
(gap >0)
arr[j + gap]
= temp;
} gap =
(int
) math.
floor
(gap /3)
;}system.out.
print
("排序後的陣列為:");
for(
int num:arr)
}}
參考
菜鳥教程
備註**部分不是很好理解,建議打樁輸出並debug,仔細研究。
Java 希爾排序
希爾排序示意圖 希爾排序,說實話有點難,不過還是弄出來了,package com.vgbh public class shellsorting 希爾排序 將無序陣列分割為若干個子串行,子串行不是逐段分割的,而是相隔特定的增量的子串行,對各個子串行進行插入排序 然後再選擇乙個更小的增量,再將陣列分割為...
希爾排序 Java
原理 對於n個待排序的數列,取乙個小於n的整數gap gap被稱為步長 將待排序元素分成若干個組子串行,所有距離為gap的倍數的記錄放在同乙個組中 然後,對各組內的元素進行直接插入排序。這一趟排序完成之後,每乙個組的元素都是有序的。然後減小gap的值,並重複執行上述的分組和排序。重複這樣的操作,當g...
java 希爾排序
希爾排序也成為 縮小增量排序 其基本原理是,現將待排序的陣列元素分成多個子串行,使得每個子串行的元素個數相對較少,然後對各個子串行分別進行直接插入排序,待整個待排序列 基本有序 後,最後在對所有元素進行一次直接插入排序。因此,我們要採用跳躍分割的策略 將相距某個 增量 的記錄組成乙個子串行,這樣才能...