排序总结[7]_链表排序

我们知道数组是支持随机访问(O(1))的,而链表由于是节点串起来的,每次访问必须得从头开始遍历,查找的平均时间复杂度是O(N)。
很多基本排序算法:冒泡;堆排序等对单链表排序就不是很合适了,下面介绍针对链表排序的归并算法。

  • 时间复杂度:O(N*logN);
  • 稳定性:稳定

主要思路:
  找到链表的中间节点,然后递归的对链表的前半部分和后半部分分别进行归并排序,完成之后再合并即可。

参考代码:

下面是利用快慢指针寻找中间节点的代码:

原文地址:https://www.cnblogs.com/lhyblog/p/5905066.html