采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,疑问是这样的,从100个数字中提取前10个大的数? ok, 按照本次优先队列的作法,当不足10个元素时,堆里持续添加数字,直到10个,此时,大堆中刚好有10个数字,堆顶就是最大值 那么接下来,我来取第11个数,假定这个数比堆顶大,ok, 取出当前的堆顶数字,然后将第11个数字放入堆中。如果这个数比堆顶小,那为什么不作行动呢,因为它只是比堆顶小,但是它完全有可能比非堆顶的值大呀,这就是我的疑问:)
从100个数字中提取前10个大的数,要使用最小堆,最小堆中存放当前找到的最大的10个数。
如果新的数字比堆顶小,就比堆中所有元素小,扔掉;
如果新的数字比堆顶大,我们就将堆顶元素拿走,新数字入堆,以此维护堆中是当前找到的最大的10个元素:)
继续加油!:)
老师,晚安, 非常感谢!
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
11.1k 16
1.8k 17
1.6k 14
1.7k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号