常見的內部排序算法有:插入排序、希爾排序、
選擇排序、冒泡排序、
歸併排序、
快速排序、堆排序、基數排序等。這裏主要介紹
希爾排序
。
一圖勝千言:算法
希爾排序,也稱遞減增量排序算法,是插入排序的一種更高效的改進版本。但希爾排序是非穩定排序算法。
希爾排序是基於插入排序的如下兩點性質而提出改進方法的:shell
希爾排序的基本思想是:先將整個待排序的記錄序列分割成爲若干子序列分別進行直接插入排序,待整個序列中的記錄基本有序
時,再對全體記錄進行依次直接插入排序。segmentfault
function shellSort(arr) { var len = arr.length, temp, gap = 1; while(gap < len/3) { //動態定義間隔序列 gap = gap*3+1; } for (gap; gap > 0; gap = Math.floor(gap/3)) { for (var i = gap; i < len; i++) { temp = arr[i]; for (var j = i-gap; j >= 0 && arr[j] > temp; j -= gap) { arr[j+gap] = arr[j]; } arr[j+gap] = temp; } } return arr; }