
算法-排序-希尔排序
发布日期:2021-05-09 00:17:47
浏览次数:13
分类:博客文章
本文共 952 字,大约阅读时间需要 3 分钟。
原理:
希尔排序也就是对直接插入排序的一种优化应用,首先将内容根据步长分组,然后再在分组的内部用直接插入排序,直到最后分组分成所有元素都在一个组里
过程:
先将元素根据步长分组(步长一般是len/2 然后依次除以二往后变化,几次分组后就除以几个2)然后内部用直接插入排序,一直到步长为1也就是所有内容在一个组里页排序后
就结束了,因为这步长为1的直接插入排序和直接插入排序就是一样的
C/C++代码实现
void ShellSort(int a[], int len)//希尔排序{ int Offset = len; while (Offset / 2 > 0)//如果步长=0表示排序结束了都 { Offset /= 2;//步长一般先用长度除以2以此递减 for (int i = 0; i < Offset; i++)//步长为几就有几个分组 { //对每个分组进行插入排序 for (int j = i+Offset; j < len; j += Offset)//通过步长来遍历整个分组 { int k = j; int temp = a[j]; if (a[j] < a[j - Offset]) { k = j; temp = a[j]; do { a[k] = a[k - Offset]; k -= Offset; } while (k != i && temp < a[k - Offset]); } a[k] = temp; } } }}
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月28日 04时25分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
《你是在做牛做马还是在做主管》- 读书笔记
2019-03-06
ASP.NET Core on K8S学习之旅(12)Ingress
2019-03-06
重新温习软件设计之路(4)
2019-03-06
《刷新》:拥抱同理心,建立成长型思维
2019-03-06
MVC3+NHibernate项目实战(二) :数据库访问层
2019-03-06
Flask入门
2019-03-06
MySQL数据库与python交互
2019-03-06
python如何对字符串进行html转义与反转义?
2019-03-06
开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程
2019-03-06
java例题_24 逆向输入数字
2019-03-06
不管人生怎么走,都需要实时回头看看
2019-03-06
golang基础--类型与变量
2019-03-06
Bitcoin区块链攻击方式
2019-03-06
.NetCore外国一些高质量博客分享
2019-03-06
Mysql的基本操作(一)增、删、改
2019-03-06
解决WebRTC中不同的浏览器之间适配的问题
2019-03-06
如何快速在odoo中创建自己的菜单
2019-03-06