c – 为什么std :: priority_queue使用max heap而不是min heap?
发布时间:2020-12-16 07:09:38 所属栏目:百科 来源:网络整理
导读:我总是想知道为什么STL优先级队列默认使用max heap而不是min heap. 想到的两个明显的用例是寻路(Dijkstra)和建立霍夫曼码. 两种算法都需要先拉最小元素. 由于排序(std :: sort)默认使用升序, 我想知道priority_queue背后的设计推理是什么, 因为我非常喜欢默
我总是想知道为什么STL优先级队列默认使用max heap而不是min heap.
想到的两个明显的用例是寻路(Dijkstra)和建立霍夫曼码. 两种算法都需要先拉最小元素. 由于排序(std :: sort)默认使用升序, 我想知道priority_queue背后的设计推理是什么, 因为我非常喜欢默认的最小堆. 解决方法
Priority_queue改编自make_heap / pop_heap / push_heap / sort_heap.当make_heap with less时,元素按升序排序.最后一个元素被视为根元素.所以它是最大堆.我想有两个原因:
>我们在所有默认STL排序中总是使用较少的.> push_back()或pop_back()比push_front()或pop_front()更有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用 webpack + react + redux + es6 开发组件化前端项目
- ruby-on-rails – Rails嵌套对象表单* _attributes
- ruby – HAML继承
- swift UI专项训练16 ProgressView进度条
- c# – 浏览器不刷新而不重建Project ASP.NET 5.0
- .net – 如何在vs2015中为本地发布的站点启用内存使用诊断
- ruby-on-rails – 为什么在rails 5.1.0中没有正确格式化sch
- 使用Quick-Cocos2d-x搭建一个横版过关游戏(一) CCStore
- cocos2d-x 同时播放多个音效的问题
- 解析xml时被卡住了,求解中