希爾排序 java 實現
希爾排序
算法思想
它是對插入插入排序的改進
搜索維基百科可知
希爾排序,也稱遞減增量排序算法
假設有這樣一組數[ 13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10 ]
,我們分別以步長為5,3,1進行排序(希爾排序最后的步長一定是1)
- 步長為5,我們可以得到如下數據,
13 14 94 33 82
25 59 94 65 23
45 27 73 25 39
10 然后 按照列排序
10 14 73 25 23
13 27 94 33 39
25 59 94 65 82
45將上述四行數字,依序接在一起時我們得到:[ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ].這時10已經移至正確位置了,然后再以3為步長進行排序:
10 14 13
25 23 33
27 25 59
39 65 73
45 94 82
94
-最后以1步長進行排序(此時就是簡單的插入排序了)。
代碼實現
public static void shellPass(Integer[] array, int d) { for (int i = d; i < array.length; i++) { int temp = array[i]; int j = i - d; while (j >= 0 && array[j] > temp) { array[j + d] = array[j]; j -= d; } array[j + d] = temp; } } public static void shellSort(Integer[] data) { int increment = 12; do { increment = increment / 3 + 1; shellPass(data, increment); } while (increment > 1); }
本文由用戶 SylArmenta 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!