這裏是傳送門⇒總結:關於排序算法html
平均時間複雜度 | 最優時間複雜度 | 最差時間複雜度 | 空間複雜度 | 穩定性 | |
---|---|---|---|---|---|
希爾排序 | *O(n1.3) | *O(n) | *O(n2) | O(1) | 不穩定 |
希爾排序是直接插入排序的改進版本。直接插入排序每次只能讓數據移動一位,而希爾排序是經過比較相距必定間隔的元素來進行,各趟比較所用的距離隨着算法的進行而減少,因此希爾排序又稱「縮小增量排序」算法
// 此處傳入發array會被直接改變 function ShellSort(array) { var len = array.length; for (var gap = Math.floor(len / 2); gap > 0; gap = Math.floor(gap / 2)) { for (var i = gap; i < len; i++) { var temp = array[i]; for (var j = i; j >= gap && temp < array[j - gap]; j -= gap) { array[j] = array[j - gap]; } array[j] = temp; } } }