社区
数据结构与算法
帖子详情
脑力挑战:随机产生五个数,求中间数(即大小排在中间的这个数),要求只能用6次比较
jhyu
2002-05-12 12:36:57
随机产生五个数,求中间数(即大小排在中间的这个数),要求只能用6次比较
...全文
215
26
打赏
收藏
脑力挑战:随机产生五个数,求中间数(即大小排在中间的这个数),要求只能用6次比较
随机产生五个数,求中间数(即大小排在中间的这个数),要求只能用6次比较
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
starfish
2002-06-07
打赏
举报
回复
To: jjjj2345(牧人)
我的方法没有问题
当第四步为:
100 50
| \
52 1
|
51
时, 比较50和52,第五步得到
100
|
52
| \
51 50
|
1
即第5步右边的情况
然后比较50和51,得到
100
|
52
|
51
|
50
|
1
即第6步的第3种情况,显然中间的51就是中位数。
jhyu
2002-06-07
打赏
举报
回复
星哥的解答太理论化了,所以没有给全分,呵呵
clickx(zzz)的是正确的
zengj
2002-05-27
打赏
举报
回复
我觉得只是一个数学问题:
首先求平均值,然后找出这五个数与那个平均值的差的绝对值的最小数,好像只用5次比较,不知道是不是这样
wiely
2002-05-27
打赏
举报
回复
这是WinerTree N个节点需要N-1次排序。
superzjx2000
2002-05-26
打赏
举报
回复
设为d1 d2 d3 d4 d5
d1:d2(假设d1〉d2)
d3:d4(假设d3〉d4)
d1:d4
"<" d5:d1 get it
else
d3:d2
"<" d5;d3 get it
else
(d1 d3)>(d2 d4)
d5 is the answer
clickx
2002-05-25
打赏
举报
回复
有趣的题目,我也来试一下:
假设有a1,a2,a3,a4,a5五个数
1.a1和a2比较,设较小这为a12,a3和a4比较,设较小者为a34
2.a12和a34比较,较小者为a
这时首先得出结论:a不是中间数。因为a比a1,a2,a3,a4中的其中三个数小。不失一般性,可以假设a1<a2,a3<a4,a1<a3,(可以在比较时交换a1,a2,a3,a4的值使这几个不等式成立)这时a=a1。剩下的问题可以转为如何通过三次比较找出a2,a3,a4,a5的第二小的那个数。需要注意的是这时a3和a4的大小关系在前面的比较中已经确定,在余下的比较中可以直接利用。由上面可以假设a3<a4。算法继续进行:
3.比较a2和a5,较小者为a25
4.比较a25和a3。
5.如果a25<a3,则a25不是所求的数。因为a25小于a3,a4(a3<a4)以及a2和a5中的较大者。同样a4也不是所求的数,因为a4大于a3和a25。故所求的数只能是a3或a2与a5的较大一个数。通过一次比较找出这两个数的较小一个就是所求的中间数,这时共计比较了6次。
6.如果a25>a3,a3不是所求的数。因为a3小于a25,a4以及a2和a5中的较大者。a2和a5的较大者也不是所求的数,因为a2和a5的较大者大于a3和a25。故所求的数只能是a25和a4。比较a25和a4较小的一个即为所求的中间数。这时共计也比较了6次
例如上面的例子1 2 4 5 3
比较1和2,4和5得出较小者为1和4,比较1和4较小者为1。把1排除,剩下4个数:2,4,5,3。这时已经知道4<5。继续比较2和3得出2<3。比较2和4得出2<4。有第5步排除2和5,剩下3和4比较可知3为所求。共比较了6次。
不知上面的方法有无错漏处?
ahahai
2002-05-25
打赏
举报
回复
(1)A,B,C,D四位随机数字进行四次比较排序:
A>B..C>D..\A>C..\C<B //=A>B>C>D
...\C>B //=A>C>B>D
...\A<C..\A<D //=C>D>A>B
...\A>D //=C>A>D>B
(2)假设四次比较得随机数字的序列为:A>B>C>D
A>B>C>D..\C>E //=C
...\C<E..\B>E //=E
...\B<E //=B
(3)逐次类推。
lizhongkun
2002-05-25
打赏
举报
回复
假如用递归,并且递归中的比较不算,那4次就可以了,呵呵!!
int f(&a,&b,&c,&d,&e){
m=a>b?(b>c?(c>d?(d>e?c:f(a,b,c,e,d)):f(a,b,d,c,e)):f(a,c,b,d,e)):f(b,a,c,d,e);
return m;
}
birdflash
2002-05-25
打赏
举报
回复
确实没有错漏,佩服!
very good!
jjjj2345
2002-05-25
打赏
举报
回复
TO clickx(zzz)
你的方法应该对的, 我找不出什么错漏处!
jjjj2345
2002-05-24
打赏
举报
回复
冒泡法好象也不行!
jjjj2345
2002-05-24
打赏
举报
回复
to melice(melice)
6:b?e
如果b>e:mid=b
但是b<e:mid就确定不了到底是e还是c了
to starfish(海星)
我感觉你的第四步的第一种情况有问题
如果是下面的情况:
100 50
| \
52 1
|
51
则6种的
* *
\ /
x
/ \
* *
中的X就不是中间值了。
zjssoft
2002-05-24
打赏
举报
回复
m=e>(a>b?a:b)?e:(a>b?a:b;);
max=m>(c>d?c:d)?m:(c>d?c:d);
ahahai
2002-05-24
打赏
举报
回复
1..
a>b
c>d
e<b..e>c //=e
2..
a>b
c>d
e<b..e<c..b>c //=c
3..
a>b
c>d
e<b..e<c..b<c //=b
4..
a>b
c>d
e>b..b>c //=b
5..
a>b
c>d
e>b..b<c..e>c //=c
6..
a>b
c>d
e>b..b<c..e<c //=e
最多只需要5次。
jjjj2345
2002-05-24
打赏
举报
回复
to ahahai(死掉了)
光看结果,就知道是错的了
你的结果中只有b,c,e有可能是中间值。
其实a 和d也有可能是中间值的
3..
a>b
c>d
e<b..e<c..b<c //=b
不能得出是b,还有可能是d,a
下面的也一样
melice
2002-05-13
打赏
举报
回复
设5个数字是:a,b,c,d,e
1: a ? b ,设 a<b
2: c ? d ,设 c<d
3,4,5: abcd排序,
其实前面的5步就是分段排序。
6 : b?e
b<e : mid =e
b>e : mid =b
melice
2002-05-13
打赏
举报
回复
to starfish:
第三步,再考虑一下好么。
melice
2002-05-13
打赏
举报
回复
to moonese:
1 2 4 5 3
chenggn
2002-05-12
打赏
举报
回复
依照前面得出的结果。。。。
chenggn
2002-05-12
打赏
举报
回复
(((c-d)-(a-b))-e) 然后。。。。
加载更多回复(6)
Web前端速成(Html+Css+JavaScript+jQuery)
讲解了html、css的知识点和运用,初步介绍了JavaScript和jQuery对页面... 不浪费时间,不浪费
脑力
,以最短的时间,最有效的方式实现编程能力的培养与提升。 想要体验开发项目或是需要日本大公司IT就业推荐的请私信。
精进:如何成为一个很厉害的人--作者:采铜
文章目录精进:如何成为一个很厉害的人序 用更勇敢的方式去生活01 时间之尺 我们应该怎样对待时间活在“全部的现在” 从当下出发,联结过去与未来那么,一个人应该怎样对待时间呢?不同场合,不同的时间视角由当下向...
ChatGPT研究分享:机器第一
次
开始理解人类世界
在AIGC年爆火之后,设计从业人员就开始担忧起自己的工作。同样,ChatGPT可预见的也会对很多行业...而所谓的“专业”能力,往往会在这个浪潮下,被快速取代。(想想当年的“八级技工”,技术再厉害,也比不过新的机器。
长文解读|深度学习+EEG时频空特征用于跨任务的心理负荷量评估
由于某些职业的
脑力
劳动量很大,例如飞行员,士兵,机组人员和外科医生,沉重的
脑力
劳动会导致严重的后果。因此,心理负荷量评估仍然是一个重要的课题。 近年来,基于脑电图的
脑力
负荷评估取得了重要成就。但是,...
逻辑思维训练500题(修订版)
逻辑思维训练500题(修订版) 正文前序:思维训练让你更高、更强! 前 言 第一章 假设法 第二章 计算法 ...第五章 观察法 ...在竞争日益激烈的环境下,一个人想要很好地生存,不仅需要付出勤奋,而且还必须具有
数据结构与算法
33,006
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章