/* STL 最大堆、最小堆的应用 */
#include <iostream>
#include <vector>
#include <algorithm> // using namespace std; /*
STL 堆操作
(1)make_heap()构造堆
void make_heap(first_pointer,end_pointer,compare_function);
默认比较函数是(<),即最大堆。
函数的作用是将[begin,end)内的元素处理成堆的结构 (2)push_heap()添加元素到堆
void push_heap(first_pointer,end_pointer,compare_function);
新添加一个元素在末尾,然后重新调整堆序。该算法必须是在一个已经满足堆序的条件下。
先在vector的末尾添加元素,再调用push_heap (3)pop_heap()从堆中移出元素
void pop_heap(first_pointer,end_pointer,compare_function);
把堆顶元素取出来,放到了数组或者是vector的末尾。
要取走,则可以使用底部容器(vector)提供的pop_back()函数。
先调用pop_heap再从vector中pop_back元素 (4)sort_heap()对整个堆排序
排序之后的元素就不再是一个合法的堆了。
*/ //最大堆
struct MaxHeapCmp
{
inline bool operator()(const int &x,const int &y)
{
return x < y;
}
}; //最小堆
struct MinHeapCmp
{
inline bool operator()(const int &x, const int &y)
{
return x > y;
}
}; void test()
{
std::vector<int> data{ ,,,,,,, }; //堆排序
std::make_heap(data.begin(), data.end(), MinHeapCmp());
for (int n : data)
{
cout << n << endl;
} printf("------------------\n"); //添加元素
data.push_back();
//再次堆排序
std::push_heap(data.begin(), data.end(), MaxHeapCmp());
for (int n : data)
{
cout << n << endl;
}
} int main()
{
test();
printf("-ok-\n");
getchar(); return ;
}

最新文章

  1. SQLite文件查看工具DB Browser for SQLite
  2. html5学习笔记一
  3. iOS 多快好省的宏定义
  4. cmd下常用的一些命令
  5. 步进循环语句for
  6. 安装aptana插件报Error opening the editor. java.lang.NullPointerException
  7. Android 官方文档:(二)应用清单 —— 2.26 &amp;lt;uses-permission&amp;gt;标签
  8. 201521123113 《Java程序设计》第4周学习总结
  9. 从分布式一致性到共识机制(一)Paxos算法
  10. Linux--FTP和MAIL服务器
  11. Mybatis的resultType
  12. 157. [USACO Nov07] 奶牛跨栏
  13. 通过sql语句修改表的结构
  14. 多分类评价指标python代码
  15. Android自定义组合控件详细示例 (附完整源码)
  16. linux 安装mysql8.0
  17. 记linux下rm误删bin文件的解决方式
  18. PAT甲 1012. The Best Rank (25) 2016-09-09 23:09 28人阅读 评论(0) 收藏
  19. cmd命令和加密文件玩法
  20. [bzoj4515][Sdoi2016]游戏-树链剖分+李超线段树

热门文章

  1. nodejs内存溢出解决方法
  2. Wooden Sticks [POJ1065] [DP]
  3. iOS自动布局的学习
  4. 【二维树状数组】计数问题 @JSOI2009/upcexam5911
  5. 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案
  6. 前端工程化系列[02]-Grunt构建工具的基本使用
  7. jPlayer获取播放时间
  8. Tensorflow之Slim使用
  9. JavaScript单独的模块中传递数据
  10. 听闻 kubernetes,快速了解一番