利用对手论证法证明中位数问题的比较次数下界

本文介绍了利用对手论证法证明求解n个数中位数问题至少需要3(n-1)/2次比较的原理。通过对手策略构造特殊输入,确保算法在最坏情况下进行尽可能多的非关键性比赛,从而得出比较次数的下界。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5个数通过6次比较求中位数的方法如下:

5个数之间的大小关系构成的一个树形图T。T中的一个结点代表一个数,而一条边代表它所关联的两个数的大小关系,T的根就是中位数。显然T中的一条边要由一次比赛来确定。在下面的图中,如果x大于y,则节点x在节点y的上方且x和y有一条边相连。另外,*表示一般的数,o表示下一次即将进行比较的两个数。

第1步,先任取两个数比较,结果为:

  *
  |
  *  o o *

第2步,再取另外两个数比较,结果为:

  o  o
  |  |
  *  *  *
 
第3步,按照上图比较其中两个标记为o的数,比较结果只有一种情况:

   *
  / /
 *   o
 | 
 *      o
 
第4步,按照上图比较其中两个标记为o的数,比较结果有两种情况:

   *    o               *
  /  / /               / /
 o    *               o   o
 |                    |   |
 *                    *   *
 
第5步,按照上图比较其中两个标记为o的数,比较结果有两种情况:

  *    *               *
 / /  / /             /
/   //   /           /
|   //   |          /
|  /  /  |         *
| /    / |         | /
|/      /|         |  /
o        o         |   /
|                  o    o
|                       |
|                       |
*                       *

第6步,按照上图比较其中两个标记为o的数,比较结果有两种情况:

 
*   *         *   *            *               *
 / /           / /             |               |
  x             x              *               *
  |            / /             |               |
  *           *   *            x    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值