希尔排序c/c++

编程入门 行业动态 更新时间:2024-10-25 18:28:49

希尔排序算法

理解

希尔排序是对插入排序的一种优化,又叫做“缩小增量排序”。希尔排序是把序列中元素按照下标的一定增量值进行分组,对每个分组分别进行插入排序,并且不断缩小增量,直到增量为1.

思路

一共三层循环:

增量我们取元素个数的二分之一,并一直以/=2迭代,直到增量为1。(最外层)

和插入排序一样,从后往前比较,初始从下标为增量的那个数开始。(中间层)

从后往前比较但不一定是相邻两个,比较的数位置相差一个增量,并且这个数必须大于等于增量。(三层循环)

代码实现

// 外层循环控制增量for (int gap = len / 2;gap >0; gap/=2){// 从下标为增量的那个数开始for (int i = len/2; i < len; i++){// 向前进行比较,相差一个增量的数为一组for (int j = i; j >= gap; j-=gap){if (q[j]<q[j-gap]){swap(q[j],q[j-gap]);}}}}

更多推荐

希尔

本文发布于:2023-05-28 06:52:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/315060.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:希尔

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!