[> ******](## 一、为什么是归并不是快排
数组排序常用快排,因为数组 O(1) 随机访问。链表不行,链表不能 O(1) 找中间元素。
归并排序只需要两个操作:找中点(快慢指针)和合并有序链表(虚拟头节点)——这两个都是链表的强项。
二、核心代码
var sortList = function(head) {
if (!head || !head.next) return head;
const mid = getMid(head);
const left = sortList(head);
const right = sortList(mid);
return merge(left, right);
};
三、总结
- 链表排序选归并不是快排
- 归并三步骤:快慢指针找中点 → 递归排序 → 合并
- 虚拟头节点简化合并逻辑)