• cb52a_c++_STL_堆排序算法make_push_pop_sort_heap


     

    cb52a_c++_STL_堆排序算法make_push_pop_sort_heap
    heapsort堆排序算法
    make_heap()-特殊的二叉树,每一个节点都比根小,根就是最大的数。大根堆,也可以做成 小根堆
    寻找最大数,最大数排在最前面。或者寻找最小数,最小数排在最前面
    push_heap()
    pop_heap()
    sort_heap()

    把vector做成像一个堆

    /*cb52a_c++_STL_堆排序算法make_push_pop_sort_heap
    heapsort堆排序算法
    make_heap()-特殊的二叉树,每一个节点都比根小,根就是最大的数。大根堆,也可以做成 小根堆
    寻找最大数,最大数排在最前面。或者寻找最小数,最小数排在最前面
    push_heap()
    pop_heap()
    sort_heap()
    
    把vector做成像一个堆
    */
    
    #include <iostream>
    #include <algorithm>
    #include <vector>
    
    template <class TT2>
    void print2(TT2 &ivec)
    {
        for (TT2::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
            cout << *iter << ' ';
        cout << endl;
    }
    
    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);
    
        cout << "原始数据:" << endl;
        print2(ivec);
        cout << "把ivec数据做成一个堆:" << endl;
        make_heap(ivec.begin(),ivec.end());
        print2(ivec);
    
        cout << "取出一个最大的数据" << endl;
        pop_heap(ivec.begin(),ivec.end());//把最大的放到最后一个位置。
        print2(ivec);
        cout << "删除最后一个数" << endl;
        ivec.pop_back();
        print2(ivec);
    
        ivec.push_back(17);
        push_heap(ivec.begin(),ivec.end());//把17加入到堆
    
        cout << "堆排序,变成普通的排序" << endl;
        sort_heap(ivec.begin(),ivec.end());
        print2(ivec);
    
    
        return 0;
    }
  • 相关阅读:
    C语言超大数据相加计算整理
    pc端页面加载更多条信息(loading)
    web前端学习路线
    linux启动流程
    Computer Science: http://www.cs.odu.edu/~cs779/
    编程网站
    sublime-text 键绑定
    monokai-background
    .vimrc
    vim 正则表达式查找ip
  • 原文地址:https://www.cnblogs.com/txwtech/p/12372064.html
Copyright © 2020-2023  润新知