STL_算法(30)_Heap算法
来源:互联网 发布:鼠标垫推荐知乎 编辑:程序博客网 时间:2024/05/08 15:37
堆排序算法(heapsort)
make_heap()
push_heap()
pop_heap()
sort_heap()
(大根堆)
从堆中取一个数的话,始终是取得是最大的。
反之就是小根堆。
#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){vector<int> ivec;for(int i = 3; i <= 7; i++)ivec.push_back(i);for(int i = 5; i <= 9; i++)ivec.push_back(i);for(int i = 1; i <= 4; i++)ivec.push_back(i);for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;make_heap(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;// 取出最大,把最大数放到最后,前面的几个形成新的堆pop_heap(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;ivec.pop_back();// 删除最后一个元素for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;system("pause");//return 0;}
#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){vector<int> ivec;for(int i = 3; i <= 7; i++)ivec.push_back(i);for(int i = 5; i <= 9; i++)ivec.push_back(i);for(int i = 1; i <= 4; i++)ivec.push_back(i);for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;make_heap(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;// 取出最大,把最大数放到最后,前面的几个形成新的堆pop_heap(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;ivec.pop_back();// 删除最后一个元素for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;// 向堆中插入元素,首先先把数据插入到向量里ivec.push_back(17);for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;// 将所有数据新建一个堆push_heap(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;// 把堆变成普通的排序sort_heap(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;system("pause");//return 0;}
0 0
- STL_算法(30)_Heap算法
- STL_算法_Heap算法(堆排)(精)
- STL算法_heap算法篇
- STL_算法_for_each
- STL_算法_transform
- STL_算法(22)_ STL_算法_替换算法
- STL_算法(21)_ STL_算法_填充新值
- STL_算法_交换(swap_ranges)
- STL_算法_查找算法(search_n)
- STL_算法_查找算法(find_first_of、find_last_of)
- STL_算法_查找算法(adjacent_find)
- STL_算法_查找算法(binary_search、includes)
- STL_算法_元素计数(count、count_if)
- STL_算法_复制元素(copy、copy_backward)
- STL_算法 for_each 和 transform 比较
- STL_算法_删除(unique、unique_copy)
- STL_算法_逆转(reverse,reverse_copy)
- STL_算法_旋转(rotate、rotate_copy)
- 设计模式之———工厂模式
- The Apostle's Creed
- 11期 10月期刊自荐
- matlab 中的图像格式
- BaseActivity视图设置
- STL_算法(30)_Heap算法
- 文章标题
- The Lord's Prayer
- HDU 莫比乌斯反演 1695 GCD
- op的交流和直流放大能力
- BP神经网络
- Linux C Socket编程原理及简单实例
- 提交表单报400错误,提示 “您提交的数据无法验证”
- 【DP 训练】Stamps and Envelope Size, ACM/ICPC World Finals 1995, UVa242