This commit is contained in:
krahets
2023-04-09 04:34:58 +08:00
parent adcbab4d4c
commit 01d05cc1f0
26 changed files with 1501 additions and 1247 deletions

View File

@@ -56,7 +56,7 @@ comments: true
观察发现,归并排序的递归顺序就是二叉树的「后序遍历」。
- **后序遍历**:先递归左子树、再递归右子树、最后处理根点。
- **后序遍历**:先递归左子树、再递归右子树、最后处理根点。
- **归并排序**:先递归左子树、再递归右子树、最后处理合并。
=== "Java"
@@ -507,7 +507,7 @@ comments: true
归并排序有一个很特别的优势,用于排序链表时有很好的性能表现,**空间复杂度可被优化至 $O(1)$** ,这是因为:
- 由于链表可仅通过改变指针来实现点增删,因此“将两个短有序链表合并为一个长有序链表”无需使用额外空间,即回溯合并阶段不用像排序数组一样建立辅助数组 `tmp`
- 由于链表可仅通过改变指针来实现点增删,因此“将两个短有序链表合并为一个长有序链表”无需使用额外空间,即回溯合并阶段不用像排序数组一样建立辅助数组 `tmp`
- 通过使用「迭代」代替「递归划分」,可省去递归使用的栈帧空间;
> 详情参考:[148. 排序链表](https://leetcode-cn.com/problems/sort-list/solution/sort-list-gui-bing-pai-xu-lian-biao-by-jyd/)