gpt4 book ai didi

algorithm - 为什么在算法导论书的快速排序中栈的深度可以是O(lgn)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:53 25 4
gpt4 key购买 nike

现在我正在阅读算法介绍,快速排序章节。说尾递归可以用来优化。

QUICKSORT'(A, p, r)
while p < r
do ▸ Partition and sort left subarray.
q ← PARTITION(A, p, r)
QUICKSORT'(A, p, q - 1)
p ← q + 1

但如果每次迭代的主元数为 [1,n-1] [n],则上述代码的堆栈深度将为 O(n)。

QUICKSORT (A, p, r )
while p < r
do Partition and sort the small subarray Þrst
q ← PARTITION(A, p, r )
if q − p < r − q
then QUICKSORT (A, p, q − 1)
p ← q + 1
else QUICKSORT (A, q + 1, r )
r ← q − 1

我在上面的代码中的理解是,它将首先处理长度较小的子数组。但是为什么可以化简为O(lgn)呢?如果枢轴每次仍然是 [1,n-1] [n],我认为它保持 O(n) 堆栈深度。

最佳答案

想想二叉树。任意二叉树。

现在在每个节点,您选择遍历节点较少的子树,直到到达叶子。

您走过的路有多长? O(log n)?是吗?

这里也是一样

关于algorithm - 为什么在算法导论书的快速排序中栈的深度可以是O(lgn),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com