希尔排序
function shellSort(arr) {
if (!Array.isArray(arr)) {
throw TypeError('arr must be an array')
}
const len = arr.length;
if (len <= 1) {
return arr;
}
// len >> 1 === Math.floor(len / 2)
for (let step = len >> 1; step > 0; step >>= 1) {
for (let i = step; i < len; ++i) {
let tmp = arr[i];
let j;
for (j = i - step; j >= 0 && arr[j] > tmp; j -= step) {
arr[j + step] = arr[j];
}
arr[j + step] = tmp;
}
}
return arr;
}最后更新于