基于迭代器的自定义堆化函数

时间:2014-02-25 20:23:08

标签: c++ heap

我正在尝试对我的自定义容器进行自定义(而不是使用STL)自定义堆排序方法。我有迭代器,但是我找不到make_heap算法的描述。据我所知,它做的事情就像安排元素一样,它们看起来像一个二进制堆,每个父节点旁边有两个孩子,然而孩子们的孩子呢?究竟是如何安排的?

1 个答案:

答案 0 :(得分:1)

调用std::make_heap后元素的顺序是实现定义的。唯一指定的是最大的元素放在范围的第一位。

我相信在最常见的实现中,如果节点存储在索引i,则其左子节点存储在2*i+1,其右子节点存储在2*i+2