Algs4-2.3.19附加题5元素找中位数比较次数少于7次

本文介绍了一种在六次比较内找出五个数中位数的算法,通过一系列比较和交换,确保找到的中位数仅大于两个数,适用于算法学习和优化场景。

2.3.19附加题:找到一种对于任意输入都只需要少于7次比较的五取样算法。
答:设有5个数,a,b,c,d,e,若这5个数有序,那么中位数为c,c的特点是它只大于两个数。

设a,b,c,d,e为任意排列情况,按下面的步骤可以在6次比较时得到中位数

1)用d与e比较,当d>e时,交换d,e得到d<e。

2) 用b与c比较,当b>c时,交换b,c得到b<c。

3) 用c与e比较,当c>e时,交换c,e得到c<e,此时有d<e,b<c<e,由于中位数只大于两个数,这里的e大于了3个数,那么e不是中位数。

4)用a与d比较,当a>d时,交换a,d得到a<d。
   此时有a<d,b<c。
  
5) 用c与d比较,当c>d时,交换c,d得到c<d,此时的b<c<d ,a<d,由于中位数只大于两个数,这里的d大于了3个数,那么d不是中位数。

   此时有b<c。

6)用a与c比较,当a>c时,交换a,c得到a<c,此时的a<c,b<c,由于中位数中只大于两个数,这里的c刚好只大于两个数,那么c就是中位数。

转载于:https://www.cnblogs.com/longjin2018/p/9860262.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值