Unify punctuation.

This commit is contained in:
krahets
2023-07-26 08:59:36 +08:00
parent 35973068a7
commit 63a0e73df0
46 changed files with 201 additions and 201 deletions
+6 -6
View File
@@ -2,17 +2,17 @@
「归并排序 Merge Sort」基于分治思想实现排序,包含“划分”和“合并”两个阶段:
1. **划分阶段**:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题
2. **合并阶段**:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较长的有序数组,直至结束
1. **划分阶段**:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题
2. **合并阶段**:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较长的有序数组,直至结束
![归并排序的划分与合并阶段](merge_sort.assets/merge_sort_overview.png)
## 算法流程
“划分阶段”从顶至底递归地将数组从中点切为两个子数组,直至长度为 1
“划分阶段”从顶至底递归地将数组从中点切为两个子数组
1. 计算数组中点 `mid` ,递归划分左子数组(区间 `[left, mid]` )和右子数组(区间 `[mid + 1, right]`
2. 递归执行步骤 `1.` ,直至子数组区间长度为 1 时,终止递归划分
1. 计算数组中点 `mid` ,递归划分左子数组(区间 `[left, mid]` )和右子数组(区间 `[mid + 1, right]`
2. 递归执行步骤 `1.` ,直至子数组区间长度为 1 时,终止递归划分
“合并阶段”从底至顶地将左子数组和右子数组合并为一个有序数组。需要注意的是,从长度为 1 的子数组开始合并,合并阶段中的每个子数组都是有序的。
@@ -155,6 +155,6 @@
归并排序在排序链表时具有显著优势,空间复杂度可以优化至 $O(1)$ ,原因如下:
- 由于链表仅需改变指针就可实现节点的增删操作,因此合并阶段(将两个短有序链表合并为一个长有序链表)无需创建辅助链表。
- 通过使用“迭代划分”替代“递归划分”,可省去递归使用的栈帧空间
- 通过使用“迭代划分”替代“递归划分”,可省去递归使用的栈帧空间
具体实现细节比较复杂,有兴趣的同学可以查阅相关资料进行学习。