Max-heap && Min-heap && push_heap
2016-01-15 20:00
399 查看
最大堆:make_heap(vi.begin(),vi.end())
最小堆:sort_heap(vi,vi+n)
Max-heap 取走根节点后完全二叉树的排序:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int ia[9] = {0, 1, 2, 3, 4, 8, 9, 3, 5}; make_heap(ia, ia + 9); for(int i = 0; i < 9; i++) { cout << ia[i] << " "; } cout << endl; make_heap(ia, ia + 9); pop_heap(ia, ia + 9); cout << ia[8] << endl; }
最小堆:sort_heap(vi,vi+n)
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int ia[9] = {0, 1, 2, 3, 4, 8, 9, 3, 5}; sort_heap(ia, ia + 9); for(int i = 0; i < 9; i++) { cout << ia[i] << " "; } cout << endl; make_heap(ia, ia + 9); pop_heap(ia, ia + 9); cout << ia[8] << endl; }
Max-heap 取走根节点后完全二叉树的排序:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int ia[9] = {0, 1, 2, 3, 4, 8, 9, 3, 5}; vector<int>vi(ia, ia + 9); make_heap(vi.begin(), vi.end()); for(int i = 0; i < vi.size(); i++) { cout << vi[i] << " "; } cout << endl; pop_heap(vi.begin(), vi.end()); for(int i = 0; i < vi.size(); ++i) { /* code */ cout << vi[i] << " "; } cout << endl; for(int i = 0; i < vi.size(); ++i) { /* code */ cout << vi[i] << " "; } cout << endl; return 0; }
相关文章推荐
- FZU2082树链剖分
- leetcode--Search a 2D Matrix
- ssh能够连接而sftp不能连接的解决方法
- 怎样理解最小二乘法原理及其用途
- POJ 1287 Networking
- 位运算函数实现float型变量取整数位
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
- Windows 下使用命令行编译C/C++文件
- HYSBZ1036 树链剖分
- 【手把手教你全文检索】Lucene索引的【增、删、改、查】
- Android AppWidget控制手机上网APN接入点
- Mysql 中 if 的 用法
- Codeforces Round #339 (Div. 2) B. Gena's Code 水题
- poj3237 树链剖分 暴力
- hdu2548 两军交锋
- Linux驱动Platform总线模型
- LeetCode_HappyNumber_哈希表的使用
- 手把手教你全文检索 Apache Lucene初探
- 三格图片轮播
- ios 公司账号申请