排序算法_链表实现

本文详细介绍了链表环境下,插入排序与快速排序的优化实现。通过迭代器访问链表,利用插入排序进行节点的有序插入,以及快速排序中维护前缀节点,实现了排序算法在链表上的高效运行。

数组的高效体现于随机访问,插排、快排等排序算法未用到这一特点,

故这两种排序算法可基于链表实现


插入排序:

迭代器 p 顺序访问链表

迭代器 i 顺序访问前 p 个元素

主要的操作为 p>i && p.value<i.value 删除原位置的 p 将p插入 i-1 与 i 之间

若为单向链表,保存 i-1 与 p-1

算法复杂度为比较的次数O(n^2),减少了移动数组导致的开销


快排:

迭代过程 传递各链表的首尾地址,需额外传递分割点的前驱节点

划分过程 维护小于划分点的前缀,顺序访问数组


具体算法实现过程有大量的节点删除、插入操作,并且需要及时保存节点的前驱与后继

很多自过程在Leecode中有对应的题,如划分链表等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值