首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ priority_queue

C++ priority_queue
EN

Stack Overflow用户
提问于 2021-03-24 19:31:09
回答 1查看 79关注 0票数 3

我正在寻找如何在O(n)时间内构建一个堆,我使用Heapify找到了它。但我想知道STL priority_queue是否也做了同样的事情?所以我的问题是:

priority_queue在STL中使用哪种堆构建方法?是使用heapify将整个数组转换为O(n)中的堆,还是使用逐个插入堆中的元素来占用O(n log n)时间?

我猜这是第二种方法,因为我们在使用STL priority_queue时一个接一个地手动插入元素。我说的对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-24 19:34:06

有一个std::make_heap(...),它一次接受整个N范围来构建堆。

正如标准中所说的,它具有O(N)复杂性。例如,您可以看到CLang如何实现std::make_heap、source is here

稍后,如果在O(log N)时间内需要,您可以使用std::push_heapstd::pop_heap添加和取出1个元素。

作为@Jarod42的suggested,你可以只使用std::priority_queue,因为它的一个构造器接受有N个元素的范围(迭代器),这个构造器也有O(N)复杂度。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66780137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档