希尔排序( Shell Sort )使用不同的步长序列( gaps )

希尔排序是一种插入排序的改进版,通过不同步长进行排序,提高效率。在步长序列的选择上,元素间需互质,通常从较大间隔开始,逐渐减小到1,最终完成排序。希尔排序的优化主要集中在有效步长序列的选择上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

希尔排序( Shell Sort )使用不同的步长序列( gaps )

希尔排序的定义

希尔排序(Shellsort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。

说这花里胡哨的没有用

希尔排序事实上就是把插入排序的逐个遍历并排序,改成了逐间隔遍历并排序,并且使得间隔值不断变小。当间隔为1的时候,这是希尔排序的最后一次遍历插入排序。希尔排序的优化实际上就是寻找实际有效的数据间隔。这些间隔实际上是通过数学的分析来确定的。

关于步长序列(gaps)

步长序列有很多,但是不管怎样. 每个步长序列中的元素之间,两两是互质的。这也就是,为什么,上课时,老师讲的例子都是奇数开始的原因。

关于基本代码

基本的希尔排序算法遍地都是,我就不重复了。

关于希尔排序的优化代码

// 这是Tokuda序列(逆序)
// 如果使用顺序的时候,需要改变最外层For
long long gaps[30] = {29414774973,13073233321,5810325920,2582367076,1147718700,
  4510097200,226709866,100759940,44782196
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值