STL_算法(30)_Heap算法
2016-10-07 20:00
183 查看
堆排序算法(heapsort)
make_heap()
push_heap()
pop_heap()
sort_heap()
(大根堆)
从堆中取一个数的话,始终是取得是最大的。
反之就是小根堆。
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; }
相关文章推荐
- STL中heap算法(堆算法)
- STL中heap算法(堆算法)
- Effective STL:30 - 37 算法
- STL_算法_Heap算法(堆排)(精)
- C++ STL 算法:Heap算法
- STL算法 ---------- Heap算法
- stl常用算法_查找相关
- STL学习记录(十四):其它几种算法
- c++ stl 算法使用
- STL算法大全
- 微软等数据结构+算法面试100题(30)--只出现一次的数字
- C++ STL 算法:区间的比较
- 9.28 算法入门STL初步 vector set
- STL算法函数总结
- C++STL算法分析之:变易算法
- 模板函数与模板类的区别。模板函数允许隐式调用,所以STL算法允许传入函数指针,也允许传入函数对象
- stl的算法(一):对序列进行只读操作(查找、搜索等)
- STL 算法
- 语言经典算法100例(1-30)
- STL中的所有算法(70个)