一、介紹
希爾排序,也稱遞減增量排序算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序算法。
希爾排序通過將比較的全部元素分爲幾個區域來提升插入排序的性能。這樣可以讓一個元素可以一次性地朝最終位置前進一大步。然後算法再取越來越小的步長進行排序,算法的最後一步就是普通的插入排序,但是到了這步,需排序的數據幾乎是已排好的了(此時插入排序較快)。
二、代碼實現
/**
* Created by lysongzi on 16/3/2.
* 希爾排序
*
*/
public class ShellSort {
public static void sort(int[] arr){
int i, j, temp;
int gap = 1;
int len = arr.length;
while (gap < len / 3)
gap = gap * 3 + 1;
for (; gap > 0; gap /= 3)
for (i = gap; i < len; i++){
temp = arr[i];
for (j = i - gap; j >= 0 && arr[j] > temp; j-= gap)
arr[j + gap] = arr[j];
arr[j + gap] = temp;
}
}
}
三、參考資料
- 維基百科