希尔排序是对插入排序的改进版,希尔排序是以gap为间隔进行不断的排序,使得元素能够尽可能的接近其真实的排序位置,当gap=1是其实就是插入排序。
function shellSort(array){
let size = array.length
let gap = Math.floor(size / 2)
while(gap >= 1){
for(let i = gap; i < size; i++){
let temp = array[i]
let j = i
while(array[j - gap] > temp && j > gap - 1){
array[j] = array[j - gap]
j -= gap
}
array[j] = temp
}
gap = Math.floor(gap / 2)
}
}