首先明确一点,如何保证这个数是中位数?我们需要保证有2个大于等于该数的数和2个小于等于该数的数。
那么显然至少需要
4
4
4 次有效比较来保证这一点。
更形象化一点说就是
0
、
1
、
2
、
3
、
4
0、1、2、3、4
0、1、2、3、4 这
5
5
5 个数我们需要
0
<
1
0<1
0<1 或
0
<
2
0<2
0<2、
1
<
2
1<2
1<2、
2
<
3
2<3
2<3、
2
<
4
2<4
2<4 或
3
<
4
3<4
3<4 四组关系才能保证
2
2
2是中位数。
而我们第一次比较是盲目且随机的,它可能对我们寻找中位数完全无帮助(
0
<
4
0<4
0<4),并且即使来到第二次比较,无论是部分是用第一次比较的数(
0
<
3
0<3
0<3)还是完全不使用第一次比较的数(
1
<
3
1<3
1<3)都可能不能作为
4
4
4次有效比较之一。
所以无论我们采取什么策略都无法避免产生
2
2
2 次无效比较,所以最少策略一定大于等于
6
6
6 次。
而我们可以找到比较 6 6 6 次一定得出中位数的策略,在此不再赘述。
综上,从随机的 5 5 5个数中找出中位数最少要比较 6 6 6次。