算法笔记系列:希尔排序
Posted JavaScript开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法笔记系列:希尔排序相关的知识,希望对你有一定的参考价值。
实现原理:首先将数据按元素下标值的一定增量进行分组,并使用插入排序算法对每组数据排序,之后将其增量减小,如此往复至增量减为 1 时(完成当次排序),算法终止。
过程图示
第1轮分组,增量为 4(n / 2)
最后一轮,增量为 1
图片来源 https://www.runoob.com/
示例代码
function shellSort(arr) {
var len = arr.length,
// 每组元素的间隔
sp = Math.floor(len / 2);
while (sp >= 1) {
for (var i = sp; i < len; i ++) {
var curr = arr[i];
for (var j = i; j - sp >= 0 && curr < arr[j - sp]; j -= sp) {
arr[j] = arr[j - sp];
}
arr[j] = curr;
}
sp = Math.floor(sp / 2);
}
}
以上是关于算法笔记系列:希尔排序的主要内容,如果未能解决你的问题,请参考以下文章
python 学习笔记 -- 数据结构与算法 希尔排序 Shell Sort