需求
对一个单链表进行升序排序,尽量节省内存,提高速度。
思路
不遍历列表获取链表长度,防止列表长度过长影响速度;
不移动每个结点中数据域的内容,防止因为数据量大影响速度;
尽量少创建节点变量,省内存;
解决方案
算法:
使用冒泡排序算法进行排序;
冒泡排序原理,动图演示:

(动图转自网络,如有侵权请通知,我会第一时间删除)
循环分析:
内循环:
假设链表头结点为Head, Head节点内数据域无有效数据,地址域中保存了A的地址;
第一个含有有效数据的结点为A,往后按照 B C D……排序
内循环每次都从排序在第一的有效结点开始比较;

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

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

所以我们需要一个指针来定位做比较的两

本文详述了如何使用冒泡排序算法对单链表进行升序排序,避免遍历获取链表长度和移动数据域,以节省内存和提高速度。通过分析内外循环逻辑,给出具体的结点定义和排序函数实现。
4万+

被折叠的 条评论
为什么被折叠?



