Random 如果我们已经得到一个随机数组,为什么要使用随机快速排序?

Random 如果我们已经得到一个随机数组,为什么要使用随机快速排序?,random,runtime,code-analysis,quicksort,Random,Runtime,Code Analysis,Quicksort,如果我们已经得到一个随机数组,为什么要使用随机快速排序 如果我们收到一个随机数组,并且每次都选择最后一个条目作为轴, 因为我们收到了一个随机数组,我们甚至不知道每个条目的位置,所以这不是仍然被认为是随机的吗 常规快速排序的伪代码 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 =

如果我们已经得到一个随机数组,为什么要使用随机快速排序

如果我们收到一个随机数组,并且每次都选择最后一个条目作为轴, 因为我们收到了一个随机数组,我们甚至不知道每个条目的位置,所以这不是仍然被认为是随机的吗

常规快速排序的伪代码

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
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)
快速排序(A、p、r) 如果p 随机快速排序的伪代码

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
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)
RandPartition(A、p、r)
i=随机(p,r)
交换A[r]和A[i]
返回分区(A、p、r)
随机快速排序(A、p、r)
如果p
是,如果已知输入是随机化的,那么额外的随机化没有任何作用。决定性地选择最后一个元素作为轴心同样好


如果不知道输入是随机的,那么图片就完全不同。

是的,如果知道输入是随机的,那么额外的随机就没有任何作用。决定性地选择最后一个元素作为轴心同样好


如果不知道输入是随机的,则图片会完全不同。

排序的结果始终是排序数组,而不是随机数组。随机化指的是算法的过程,而不是结果。你在开赌场吗?它必须有多随机?排序的结果总是一个排序数组,而不是一个随机数组。随机化指的是算法的过程,而不是结果。你在开赌场吗?随机性必须有多大?概率是如果他依靠快速排序进行随机分组,那么它不是随机的。概率是如果他依靠快速排序进行随机分组,那么它不是随机的。