相关疑难解决方法(0)

如何在C++标准库中更改堆中的max元素?

如果我有一个最大堆,并且如果我需要更改max元素,那么它归结为单个冒泡算法.有没有办法通过C++标准库来做到这一点,而无需手动编写算法?

我知道它应该等同于pop_heap + push_heap,但是这是2次冒泡操作而不是一次.

那么 - 这个通过库API公开的泡泡算法是什么?

c++ algorithm heap stl

6
推荐指数
2
解决办法
997
查看次数

使用 C++ 标准库在对数时间内进行 Heapify

我有一个堆使用std::make_heap

std::vector<int> v{1,2,3,5,9,20,3};
std::make_heap(v.begin(), v.end());
Run Code Online (Sandbox Code Playgroud)

现在我通过更改一个随机元素来更新堆:

v[3] = 35;
Run Code Online (Sandbox Code Playgroud)

是否有标准库的方式,才能把再次调整堆O(log n)时间,其中n是容器的大小。基本上我正在寻找 heapify 功能。我知道改变了什么元素。

我明白std::make_heapO(n log n)时候了。我也遇到了重复的问题,但这在某种意义上是不同的,因为它正在改变最大元素。因为该解决方案已经给出了O(log n)该问题的复杂性。

我正在尝试更改堆中的任何随机元素。

c++ algorithm heap stl data-structures

6
推荐指数
2
解决办法
733
查看次数

标签 统计

algorithm ×2

c++ ×2

heap ×2

stl ×2

data-structures ×1