C++ STL 算法:Heap算法

来源:互联网 发布:js 设置disabled 编辑:程序博客网 时间:2024/05/16 10:34
1、堆排序算法(heapsort)
2、make_heap()//最大的放在堆顶
make_heap(ivec.begin(),ivec.end());
3、push_heap()//把最后的元素插入堆中
push_heap(ivec.begin(),ivec.end());
4、pop_heap()//把根弹到最后
pop_heap(ivec.begin(),ivec.end());
5、sort_heap()//按一定顺序排序
sort_heap(ivec.begin(),ivec.end());
例子:
#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