zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    /proc/uptime详解
    UE没法远程修改文件
    ssh隐藏的sftp功能的使用
    ftp配置文件
    如何判断网线是否连接
    NTP多种模式的配置
    系统开机启动过程
    window BIOS设置硬盘启动模式
    shell加密
    /etc/sysconfig/network-scripts/下文件介绍
  • 原文地址:https://www.cnblogs.com/txwtech/p/12372064.html
Copyright © 2011-2022 走看看