1.希爾排序
希爾排序法又稱縮小增量法。是直接排序的優化。shell
2.基本思想
希爾排序法的基本思想是:先選定一個整數,把待排序文件中全部記錄分紅一個組,全部距離爲同樣的記錄分在同一組內,並對每一組內的記錄進行排序。而後取整數一半的值,重複上述分組和排序的工做。當值到達1時,全部記錄在同一組內排好序。數組
3.圖解(按從小到大排序,以6個數字爲例)
①將整個數組分組gap=arr.length/2;如圖顏色同樣的爲一組。
②將顏色同樣的值進行比較,小的換到前面,大的換到後面;再進行分組gap=gap/2,如圖顏色同樣的爲一組。
③重複上述步驟。
④最終排好的序列如圖。
markdown
4.代碼實現ide
public static void shellSort(int[] array) { int gap = array.length; while (gap > 1) { gap = gap / 2; insertGap(array, gap); } insertGap(array, 1); } public static void insertGap(int[] array, int gap) { for (int bound = 1; bound < array.length; bound++) { int tmp = array[bound]; int cur = bound - gap; for (cur = bound - gap; cur >= 0; cur -= gap) { if (array[cur] > tmp) { array[cur + gap] = array[cur]; } else { break; } } array[cur + gap] = tmp; } }