请稍等 ...
×

采纳答案成功!

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

从N个元素中维护前M个元素的疑问

老师,疑问是这样的,从100个数字中提取前10个大的数?
ok, 按照本次优先队列的作法,当不足10个元素时,堆里持续添加数字,直到10个,此时,大堆中刚好有10个数字,堆顶就是最大值
那么接下来,我来取第11个数,假定这个数比堆顶大,ok, 取出当前的堆顶数字,然后将第11个数字放入堆中。如果这个数比堆顶小,那为什么不作行动呢,因为它只是比堆顶小,但是它完全有可能比非堆顶的值大呀,这就是我的疑问:)

正在回答

1回答

从100个数字中提取前10个大的数,要使用最小堆,最小堆中存放当前找到的最大的10个数。


如果新的数字比堆顶小,就比堆中所有元素小,扔掉;

如果新的数字比堆顶大,我们就将堆顶元素拿走,新数字入堆,以此维护堆中是当前找到的最大的10个元素:)


继续加油!:)

3 回复 有任何疑惑可以回复我~
  • 提问者 甲骨文_0001 #1
    老师,晚安, 非常感谢!
    回复 有任何疑惑可以回复我~ 2019-06-15 01:03:26
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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