常见排序算法:希尔排序算法

希尔排序是一种不稳定的排序算法,通过分组插入排序来提高效率。它首先设定一个增量序列,如初始增量delta=length,然后对每个组进行插入排序。在每一轮排序中,根据增量delta将待排序元素分为若干子序列,对每个子序列进行插入排序,最后逐步减小增量并重复此过程,直至增量为1,完成整个序列的排序。希尔排序的时间复杂度和空间复杂度分别为和。
摘要由CSDN通过智能技术生成

基本思想:对待排序的数据进行一个分组,对每个组进行插入排序,分组增量取delta=delta/3+1。每个组插入排序完成后再进行总的插入排序。

原理:

1.delta初始为length,进入while(delta>1)循环,获取每次的增量:delta=delta/3+1=3;即取出a[3]与a[6]。同时将a[0]作为插入排序的基本数。

2.将取出的元素进行插入排序。j指向a[3]。若a[j]<a[j-delta],将a[j]放入temp。k指向a[0]。移动k指针依次与temp进行比较。 若a[k]>temp。则a[k+delta]=a[k]。

3.当k指针小于0或者a[k]>temp则跳出循环,将a[k+delta]=temp。完成第一轮的插入排序,依次移动j指针进行剩下的插入排序

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值