堆原理与用法

一. 常用堆函数

相关函数定义在头文件#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()

  1. 将元素添加至数组尾部;
  2. 用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()

  1. pop_heap() 函数将第一个元素移到最后,并保证剩下的元素仍然是一个堆(可能重新排列)

    由于堆是队列结构,只能从堆中删除堆顶元素。移
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值