希尔排序(C语言简单实现)

希尔排序是直接插入排序的高效升级版,采用跳跃式比较和交换,通过精心选择增量序列来提高排序效率。虽然不是稳定的排序算法,但其时间复杂度为O(n^1.3),优于直接插入排序。文章介绍了希尔排序的复杂度分析,并给出了具体实现例子。

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

希尔排序(C语言简单实现)

希尔排序是直接插入排序的升级版,直接插入排序每次增量是1,但希尔排序的增量increment比1大,也就是说直接插入排序是一个一个比较的,但是希尔排序是跳着来的,从而实现顺序表的基本有序,如果对直接插入排序不了解的可以看下我的另一篇文章:直接插入排序,看懂了直接插入排序再回来看希尔排序就很简单了。

/* 顺序表L作希尔排序 */
void ShellSort(SqList *L){
   
   
	int i, j;
	int increment = L->length;
	do{
   
   
		increment = increment/3+1;		//增量序列
		for(i=increment+1;i<=L->length;i++){
   
   
			if(L->r[i] < L->r[i-increment]){
   
   	//需将L->r[i]插入有序增量子表
				L->r[0] = L->r[i];	//暂存在L->r[0]
				for(j=i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值