排序算法_链表实现

来源:互联网 发布:淘宝卖家登入 编辑:程序博客网 时间:2024/06/05 19:05

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

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


插入排序:

迭代器 p 顺序访问链表

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

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

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

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


快排:

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

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


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

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

0 0
原创粉丝点击