希尔排序
/希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。
//希尔排序是基于插入排序的以下两点性质而提出改进方法的:
1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。
2.但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。
function shellsSort(arr: number[]) {
let len = arr.length;
for (let gap = Math.floor(len / 2); gap > 0; gap = Math.floor(gap / 2)) {//希尔排序中外层步长
for (let i = gap; i < len; i++) {//开始插入排序
for (let j = i - gap; j > 0 && arr[j] > arr[gap + j]; j -= gap) {//满足条件则插入
let temp = arr[j];
arr[j] = arr[gap + j];
arr[gap + j] = temp;
}
}
}
}
来源:CSDN
作者:qq_40846446
链接:https://blog.csdn.net/qq_40846446/article/details/103465169