我试图更好地理解减少,我目前正在研究两种算法,“中位数的中位数”和快速排序。
我知道这两种算法都使用相似(实际上相同)的分区子例程来帮助解决它们的问题,最终使它们非常相似。
Select(A[1...n],k): // Pseudocode for median of medians
m = [n/5]
for i from 1 to m:
B[i] = Select(A[5i-4..5i],3)
mom = Select(B[1..m],m/2)
r = partition(A[1..n],mom) // THIS IS THE SUBROUTINE
if k < r:
return Select(A[1..r-1],k)
else if k > r:
return Select(A[r+1..n],k-r)
else
return mom
那么对于这两种算法,“减少”一词是否有意义?以下任何一项有意义吗?
Medians/Quicksort 的中值可以简化为一个分区子程序
中位数的中位数减少到快速排序
快速排序减少到中位数的中位数