请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

求N个数的最大值和最小值,最少的比较次数

答案是3N/2,我没搞懂其中的原理,希望大佬们点醒我一下,谢谢了

正在回答

1回答

liuyubobobo 2017-08-23 02:15:18

这个问题其实还挺有意思的:)


最简单的思路,是从头到尾遍历一遍,对于每一个元素,都和当前找到的最大值和最小值比较一下,看看它是不是新的最大值和最小值。这样做,除了第一个元素,后续每一个元素都需要比较两次,最坏总共需要2(n-1)次比较。


但是,其实我们不需要对于每一个元素,都判断它是不是新的最大值和最小值。因为一个元素不可能同时是最大值,又是最小值。我们可以两个元素两元素来,每两个元素先进行一次比较,其中大的元素才有可能是新的最大值;小的元素才有可能是新的最小值。这样,我们只需要再将大的元素和已经找到的最大值作比较;小的元素和已经找到的最小值作比较就好了。这种情况下,我们每处理两个元素,只需要进行3次比较,总共大致需要(3/2)*N次比较。如果要想获得准确的比较次数,这里需要对N是奇是偶进行分类讨论,有兴趣可以自己试试看:)


这是个很好的问题,有时间我要写一篇详细的文章介绍。感谢你的好问题:)


加油!

1 回复 有任何疑惑可以回复我~
  • 提问者 Mark1900 #1
    懂了,谢谢老师
    回复 有任何疑惑可以回复我~ 2017-08-23 10:43:54
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号