通过缩小增量的方式不断的进行插入排序
算法流程:
1、选取一个间隔数k对于间隔nk为一组的所有数进行分组
2、对每一组进行插入排序
3、不断缩小间隔k,重复第*2步的操作直到k等于1
代码
**
function ShellSort(arr){let n = arr.lengthfor (let k = n / 2 | 0; k >= 1; k >>= 1) {for (let i = 0; i < n; i += k) {let j = iwhile(j - k >= 0 && arr[j] < arr[j - k]){swap(arr, j - k, j)j -= k}}}return arr}
时间复杂度(O(nlogn))
空间复杂度(O(1))
