由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - CLRS problem 7-4 tail recursion 求教。
相关主题
嵌入式系统用什么sorting算法比较好?很多算法题如果以前没看过,更本做不出。。。
一个简单的算法问题? (转载)算法题求助
包子求解c++ 程序Google面试怎么这么难啊,LG很难过,我该怎么劝他呢? (转载)
An algorihmic question请教一个top-k elements的算法问题
问一下primitive recursive function等于哪些其它的complexity class?请教一个初级算法问题
[合集] computable vs. non-computable算法疑问
问一个算法sorting问题求教。 (转载)
database theory question做题作题
相关话题的讨论汇总
话题: quicksort话题: 8722话题: partition话题: clrs话题: recursion
进入CS版参与讨论
1 (共1页)
h**o
发帖数: 548
1
CLRS problem 7-4:
QUICKSORT using tail recursion is implemented as QUICKSORT':
QUICKSORT'(A, p, r)
1 while p < r
2 do // Partition and sort left subarray.
3 q ← PARTITION(A, p, r)
4 QUICKSORT'(A, p, q − 1)
5 p ← q + 1
QUICKSORT(A, p, r)
1 if p < r
2 then q ← PARTITION(A, p, r)
3 QUICKSORT(A, p, q − 1)
4 QUICKSORT(A, q + 1, r)
请问为何QUICKSORT‘ 和QUICKSORT 是一样的哪?
in QUICKSORT()', 第一次QUICKSORT'(A, p, q − 1), 第二次
因为 p ← q + 1, QUICKSORT'(A, p, q − 1) 相当于 QUICKSORT'(A, q+1, q'
− 1)
where q' 是 [q+1,r]之间的一个数,而QUICKSORT() 中 第一次QUICKSORT(A, p, q &#
8722; 1),
但第二次是 QUICKSORT(A, q + 1, r)。 最后一个参数是r, 不是 q'.
有谁解释下为何QUICKSORT‘ 和QUICKSORT 是一样的哪?
I******c
发帖数: 163
2
in QUICKSORT()', 第一次QUICKSORT'(A, p, q − 1), 第二次
因为 p ← q + 1, QUICKSORT'(A, p, q − 1) 相当于 QUICKSORT'(A, q+1, q'
− 1)
我觉得第二次相当于 QUICKSORT'(A, q+1, r),因为是在同一个function里。我不太清
楚你的q'是如何算出来的。
h**o
发帖数: 548
3
第一次QUICKSORT'后, p = q+1;
然后回line3, q = PARTITION(A, p, r), 相当于q' = PARTITION(A, q+1, r);
所以此时得到的新的q'一定在[q+1,r]间吧。
然后line4,QUICKSORT'(A, p, q − 1), 相当于QUICKSORT'(A, q+1, q' −
; 1)
所以我不明白为何第二次QUICKSORT'后相当于QUICKSORT'(A, q+1, r)而不是
QUICKSORT'(A, q+1, q' − 1)?

q'

【在 I******c 的大作中提到】
: in QUICKSORT()', 第一次QUICKSORT'(A, p, q − 1), 第二次
: 因为 p ← q + 1, QUICKSORT'(A, p, q − 1) 相当于 QUICKSORT'(A, q+1, q'
: − 1)
: 我觉得第二次相当于 QUICKSORT'(A, q+1, r),因为是在同一个function里。我不太清
: 楚你的q'是如何算出来的。

I******c
发帖数: 163
4
哦,我明白你说得第一次和第二次的QUICKSORT'的具体意思了。你说第二次QUICKSORT'
(A, q+1, q' − 1)实际上也是相当于QUICKSORT(A, q+1, q' − 1)的。
h**o
发帖数: 548
5
明白了。
the basic idea of QUICKSORT' 是说 每次循环都 recursively sort the first part
, iterately sort the second part.

QUICKSORT'

【在 I******c 的大作中提到】
: 哦,我明白你说得第一次和第二次的QUICKSORT'的具体意思了。你说第二次QUICKSORT'
: (A, q+1, q' − 1)实际上也是相当于QUICKSORT(A, q+1, q' − 1)的。

1 (共1页)
进入CS版参与讨论
相关主题
做题作题问一下primitive recursive function等于哪些其它的complexity class?
第一次c++亲密接触:模板问题请教[合集] computable vs. non-computable
Dijkstra SSSP@CLR的疑问 (转载)问一个算法
[合集] How about in-memory OS and Database?database theory question
嵌入式系统用什么sorting算法比较好?很多算法题如果以前没看过,更本做不出。。。
一个简单的算法问题? (转载)算法题求助
包子求解c++ 程序Google面试怎么这么难啊,LG很难过,我该怎么劝他呢? (转载)
An algorihmic question请教一个top-k elements的算法问题
相关话题的讨论汇总
话题: quicksort话题: 8722话题: partition话题: clrs话题: recursion