为什么使用随机快速排序,如果我们已经得到一个随机数组?
如果我们收到一个随机数组,并且每次选择最后一个条目作为数据透视表, 因为我们收到了一个随机数组,我们甚至不知道它们所在的每个条目位置,所以这仍然不被认为是随机的。
常规快艇的PSEUDO代码
QUICKSORT(A,p,r)
if p< r
q = PARTITION(A,p,r)
QUICKSORT(A,p,q-1)
QUICKSORT(A,q+1,r)
PARTITION(A, p, r)
x = A[r]
i = p − 1
for j = p to r − 1 do
if A[j] ≤ x then
i = i + 1
exchange A[i] and A[j]
exchange A[i + 1] and A[r]
return i + 1
随机游戏的PSEUDO代码
RandPartition(A, p, r)
i = Random(p, r)
exchange A[r] and A[i]
return PARTITION(A, p, r)
RandQuicksort(A, p, r)
if p < r then
q = RandPartition(A, p, r)
RandQuicksort(A, p, q − 1)
RandQuicksort(A, q + 1, r)
答案 0 :(得分:1)
是的,如果已知输入是随机的,则额外的随机化没有任何意义。确定性地选择最后一个元素作为枢轴也同样好。
如果输入不知道要随机化,那么图片会大不相同。