算法笔记系列:希尔排序

Posted JavaScript开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法笔记系列:希尔排序相关的知识,希望对你有一定的参考价值。

希尔排序
希尔排序是直接插入排序的高效改进版,它是一种非稳定的排序算法

:首先将数据按元素下标值的一定增量进行分组,并使用插入排序算法对每组数据排序,之后将其增量减小,如此往复至增量减为 1 时(完成当次排序),算法终止。

过程图示

第1轮分组,增量为 4(n / 2)

第2轮分组,增量为 2 (n / 2 / 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

Java学习笔记——排序算法之希尔排序(Shell Sort)

算法系列希尔排序篇