#include <vector>#include <algorithm>#include <iostream>using namespace std;void main(){vector<int> v;v.push_back(5);v.push_back(6);v.push_back(4);v.push_back(8);v.push_back(2);v.push_back(3);v.push_back(7);v.push_back(1);v.push_back(9);make_heap(v.begin(),v.end());v.push_back(20);push_heap(v.begin(),v.end());vector<int>::iterator ilocation;for(ilocation=v.begin();ilocation!=v.end();ilocation++)cout<<*ilocation<<' ';cout<<endl;pop_heap(v.begin(),v.end());for(ilocation=v.begin();ilocation!=v.end();ilocation++)cout<<*ilocation<<' ';cout<<endl;}
1 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
堆是如二叉树组织的元素的序列。 每个堆元素对应于树节点。 第一个值顺序 [首先。最后) 是在的根目录,并谓词按排序。 例如,如果谓词是更大的 <int>,堆中的每个元素满足以下 ; 而每个元素是大于或等于父级。 最小的元素存储在该的根,并所有子项都保存逐渐更大的值。
make_heap 函数将 [首先转换范围最后一个) 到一个堆。
sort_heap 函数对排序使用 make_heap 函数创建的"heapified 的序列。
push_heap 函数在堆中插入一个新值。
pop_heap 函数交换由 [first, last),指定在堆中的第一个和最后一个元素,然后减少恢复堆属性前一个序列的长度。
例如
Numbers { 4 10 70 10 30 69 96 100 }
之后调用 make_heap
Numbers { 4 10 69 10 30 70 96 100 }
之后调用 sort_heap
Numbers { 100 96 70 69 30 10 10 4 }
之后调用 push_heap()
Numbers { 4 7 10 30 100 10 70 96 69 }
之后调用 pop_heap
Numbers { 7 30 10 69 100 10 70 96 4 }
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消