我试图理解寻找中位数的选择算法。我在下面粘贴了伪代码。
SELECT(A[1 .. n], k):
if n<=25
use brute force
else
m = ceiling(n/5)
for i=1 to m
B[i]=SELECT(A[5i-4 .. 5i], 3)
mom=SELECT(B[1 ..m], floor(m/2))
r = PARTITION(A[1 .. n],mom)
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
我有一个非常琐碎的疑问。我想知道作者上面写的 i<=25 的蛮力是什么意思。是不是他会一个一个地比较元素和其他元素,看看它是第k大的还是别的。