您的位置:首页 > 其它

Max-heap && Min-heap && push_heap

2016-01-15 20:00 399 查看
最大堆:make_heap(vi.begin(),vi.end())

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int ia[9] = {0, 1, 2, 3, 4, 8, 9, 3, 5};
make_heap(ia, ia + 9);
for(int i = 0; i < 9; i++)
{
cout << ia[i] << " ";
}
cout << endl;
make_heap(ia, ia + 9);
pop_heap(ia, ia + 9);
cout << ia[8] << endl;
}


最小堆:sort_heap(vi,vi+n)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int ia[9] = {0, 1, 2, 3, 4, 8, 9, 3, 5};
sort_heap(ia, ia + 9);
for(int i = 0; i < 9; i++)
{
cout << ia[i] << " ";
}
cout << endl;
make_heap(ia, ia + 9);
pop_heap(ia, ia + 9);
cout << ia[8] << endl;
}


Max-heap 取走根节点后完全二叉树的排序:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int ia[9] = {0, 1, 2, 3, 4, 8, 9, 3, 5};
vector<int>vi(ia, ia + 9);
make_heap(vi.begin(), vi.end());
for(int i = 0; i < vi.size(); i++)
{
cout << vi[i] << " ";
}
cout << endl;
pop_heap(vi.begin(), vi.end());
for(int i = 0; i < vi.size(); ++i)
{
/* code */
cout << vi[i] << " ";
}
cout << endl;
for(int i = 0; i < vi.size(); ++i)
{
/* code */
cout << vi[i] << " ";
}
cout << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: