详解单链表冒泡排序

C语言,对单链表进行冒泡排序
摘要由CSDN通过智能技术生成

 

需求

对一个单链表进行升序排序,尽量节省内存,提高速度

思路

不遍历列表获取链表长度,防止列表长度过长影响速度;

不移动每个结点中数据域的内容,防止因为数据量大影响速度;

尽量少创建节点变量,省内存;

解决方案

算法:

使用冒泡排序算法进行排序;

冒泡排序原理,动图演示:

(动图转自网络,如有侵权请通知,我会第一时间删除)

循环分析:

内循环:

假设链表头结点为Head, Head节点内数据域无有效数据,地址域中保存了A的地址;

第一个含有有效数据的结点为A,往后按照 B C D……排序

内循环每次都从排序在第一的有效结点开始比较;

第一次应当比较A和B,如果A大于B互换位置,那么Head的地址域就应该指向了B,B的地址域指向A,A的地址域指向C

此时,前两个结点已经完成了比较,并且将较大的一个放在了第二位,那么就要比较这个较大的和第三个结点的大小

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值