• Max-heap && Min-heap && push_heap


    最大堆: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;
    }
  • 相关阅读:
    尾递归
    博客搬家 --- CSDN
    sublime text 插件集锦
    chrome 常用插件集锦
    IntelliJ Idea 2017 免费激活方法
    Mac下Java JNI 调C
    webgl学习笔记五-纹理
    webgl学习笔记四-动画
    webgl学习笔记三-平移旋转缩放
    webgl学习笔记二-绘图多点
  • 原文地址:https://www.cnblogs.com/chenyang920/p/5134354.html
Copyright © 2020-2023  润新知