From 6af9eabe002e6057bff7fc1815baa1234312594e Mon Sep 17 00:00:00 2001 From: krahets Date: Thu, 7 Dec 2023 00:31:09 +0800 Subject: [PATCH] build --- docs/chapter_sorting/quick_sort.md | 2 +- overrides/partials/.gitignore | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 overrides/partials/.gitignore diff --git a/docs/chapter_sorting/quick_sort.md b/docs/chapter_sorting/quick_sort.md index 6079b7c86..033525cf1 100755 --- a/docs/chapter_sorting/quick_sort.md +++ b/docs/chapter_sorting/quick_sort.md @@ -1044,7 +1044,7 @@ comments: true ## 11.5.5   尾递归优化 -**在某些输入下,快速排序可能占用空间较多**。以完全倒序的输入数组为例,设递归中的子数组长度为 $m$ ,每轮哨兵划分操作都将产生长度为 $0$ 的左子数组和长度为 $m - 1$ 的右子数组,这意味着每一层递归调用减少的问题规模非常小(只减少一个元素),递归树的高度会达到 $n - 1$ ,此时需要占用 $O(n)$ 大小的栈帧空间。 +**在某些输入下,快速排序可能占用空间较多**。以完全有序的输入数组为例,设递归中的子数组长度为 $m$ ,每轮哨兵划分操作都将产生长度为 $0$ 的左子数组和长度为 $m - 1$ 的右子数组,这意味着每一层递归调用减少的问题规模非常小(只减少一个元素),递归树的高度会达到 $n - 1$ ,此时需要占用 $O(n)$ 大小的栈帧空间。 为了防止栈帧空间的累积,我们可以在每轮哨兵排序完成后,比较两个子数组的长度,**仅对较短的子数组进行递归**。由于较短子数组的长度不会超过 $n / 2$ ,因此这种方法能确保递归深度不超过 $\log n$ ,从而将最差空间复杂度优化至 $O(\log n)$ 。代码如下所示: diff --git a/overrides/partials/.gitignore b/overrides/partials/.gitignore new file mode 100644 index 000000000..3eebfb928 --- /dev/null +++ b/overrides/partials/.gitignore @@ -0,0 +1 @@ +comments.html \ No newline at end of file