码迷,mamicode.com
首页 > 其他好文 > 详细

Max-heap && Min-heap && push_heap

时间:2016-01-15 22:39:21      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

最大堆: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;
}

 

Max-heap && Min-heap && push_heap

标签:

原文地址:http://www.cnblogs.com/chenyang920/p/5134354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!