一. 常用堆函数
相关函数定义在头文件#include
1.创建堆 make_heap()
make_heap()该函数默认生成大顶堆。有第3个参数,可以用来指定一个比较函数用于堆的排序。
vector<double> numbers{2.5,10.0,3.5,6.5,8.0,12.0,1.5,6.0};
//默认生成大顶堆
make_heap(begin(numbers), end(numbers));//{12 10 3.5 6.5 8 2.5 1.5 6}
// make_heap(numbers.begin(), numbers.end());
//生成小顶堆
make_heap(begin(numbers), end(numbers), greater<>());
2.堆中添加元素 push_heap()
- 将元素添加至数组尾部;
- 用push_heap()调整堆。
注意: push_heap() 和 make_heap() 需要和第三个参数相同。
numbers.push_back(11); // {12 10 3.5 6.5 8 2.5 1.5 6 11}
push_heap(begin(numbers), end(numbers));//{12 11 3.5 10 8 2.5 1.5 6 6.5} // 向上调整
3.删除最大元素(最小元素) pop_heap()
- pop_heap() 函数将第一个元素移到最后,并保证剩下的元素仍然是一个堆(可能重新排列)
由于堆是队列结构,只能从堆中删除堆顶元素。移