#include<iostream>
#include<algorithm>
#include<functional>
#include<vector>
using namespace std;
int main()
{
vector<int> v1;
for (int i = 3; i <= 7; ++i)
v1.push_back(i);
for (int i = 5; i <= 9; ++i)
v1.push_back(i);
for (int i = 1; i <= 4; ++i)
v1.push_back(i);
for (auto iter = v1.begin(); iter != v1.end(); ++iter)
cout << *iter << " ";
cout << endl;
//变成一个堆(heap)
make_heap(v1.begin(), v1.end());
for (auto iter = v1.begin(); iter != v1.end(); ++iter)
cout << *iter << " ";
cout << endl;
//取走最大的数据取走
pop_heap(v1.begin(), v1.end());
for (auto iter = v1.begin(); iter != v1.end(); ++iter)
cout << *iter << " ";
cout << endl;
v1.pop_back();//把最后的数据删除
for (auto iter = v1.begin(); iter != v1.end(); ++iter)
cout << *iter << " ";
cout << endl;
//把一个数据加入到堆里
v1.push_back(17);//把数据加到向量的最后
push_heap(v1.begin(), v1.end());//把所有的数据变成一个新的堆
for (auto iter = v1.begin(); iter != v1.end(); ++iter)
cout << *iter << " ";
cout << endl;
//把堆变成不是堆,就是普通的排序
sort_heap(v1.begin(), v1.end());//把所有的数据变成一个新的堆
for (auto iter = v1.begin(); iter != v1.end(); ++iter)
cout << *iter << " ";
cout << endl;
system("pause");
return 0;
}
堆算法()
最新推荐文章于 2022-10-12 17:21:37 发布