#include <iostream>
#include <algorithm>
using namespace std;        //一般而言设计的时候都是从零开始的。

bool compare(int a,int b)
{
    return a>b;             //这里之后的时候在看一下吧。堆是相反的。    
}

int main()
{
    int n;
    cout<<"请输入数组的个数"<<endl; 
    cin>>n;       //从八开始。 
    int arr[20],arr1[20];
    cout<<"请输入元素的值"<<endl;
    for(int i=0;i<n;i++)
    {
        cin>>arr[i];
        arr1[i]=arr[i];
    }    
    
    make_heap(arr,arr+n);   //默认是大根对;先是最大堆。 大根堆是实现了。
    cout<<"大根堆是:"<<endl; 
    for(int i=0;i<n;i++)
        cout<<arr[i]<<" ";
    cout<<endl; 
    cout<<"请输入要添加的元素。"<<endl;
    cin>>arr[n];
    push_heap(arr,arr+n+1);   //默认是大根堆。 
    cout<<"添加了一个元素之后是:"<<endl;     //因为这几个函数的时间复杂度是不同的,所以一定要选择恰当的函数。          
    for(int i=0;i<=n;i++)
        cout<<arr[i]<<" ";
        cout<<endl;                           
    pop_heap(arr,arr+n+1);
    cout<<"第一个元素和最后一个元素进行交换之后是:"<<endl;
    for(int i=0;i<=n;i++)
        cout<<arr[i]<<" ";
        cout<<endl;  
    make_heap(arr,arr+n+1); 
    sort_heap( arr,arr+n+1 );     
    cout<<"排序之后是:"<<endl;
    for(int i=0;i<=n;i++)
        cout<<arr[i]<<" ";
        cout<<endl; 
    
    make_heap(arr1,arr1+n,compare);  //小根堆。 
    cout<<"小根堆是:"<<endl;
    for(int i=0;i<n;i++)
        cout<<arr1[i]<<endl;  //定要默认已经是堆了,并且还要进行对应起来。
    cout<<"请输入要添加的值:"<<endl;
    cin>>arr1[n];
    cout<<"添加了一个元素之后是:"<<endl;
    push_heap(arr1,arr1+n+1,compare);      //定要表示类别的。 
    for(int i=0;i<=n;i++)
        cout<<arr1[i]<<" ";
        cout<<endl;                                               
            
    return 0;    
}

make_heap(),push_heap(),pop_heap(),sort_heap()用法。相关推荐

  1. C++ 最大堆最小堆与push_heap pop_heap

    make_heap:根据不同参数生成大顶堆或者小顶堆,默认大顶堆. make_heap(_RAIter,_RAIter) 默认生成大顶堆 make_heap(_RAIter,_RAIter,_Comp ...

  2. POJ 3784.Running Median

    2015-07-16 问题简述: 动态求取中位数的问题,输入一串数字,每输入第奇数个数时求取这些数的中位数. 原题链接:http://poj.org/problem?id=3784 解题思路: 求取中 ...

  3. 最全ACM常用STL

    STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespace std; 调用: next_permut ...

  4. 第四章 序列式容器(sequence containers)

    序列式容器(sequence containers) 1.容器的概观与分类 2.vector 3.list 4.deque 5.stack 6.queue 7.heap(隐私表述,implicit r ...

  5. C ++ 编程思想(卷二) 笔记

    2013年8月16日夜02:53 第一章 1.异常处理是C++的主要特征之一 2.assert():用于开发阶段调试,#define NDEBUG 使得assert()失效. 3.C语言中错误处理信息 ...

  6. 八股面经总结-C++

    目录 [C++基础]关键字与运算符 指针与引用 define 和 typedef 的区别 define 和 inline 的区别 override 和 overload new 和 malloc co ...

  7. 【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)

    C++ 泛型编程 中的泛型算法和STL(sort,find,find) 1. 引言 1.1 简述泛型编程和STL的重要性 1.2 介绍泛型算法的基本概念 2. STL中的泛型算法 2.1 定义及主要特 ...

  8. C++ priority_queue 的使用和源码详解

    目录 简介 priority_queue 的使用 泛型算法make_heap().push_heap().pop_heap() make_heap() push_heap() pop_heap() 简 ...

  9. 【STL学习】优先级队列Priority Queue详解与C++编程实现

    优先级队列Priority Queue介绍 优先级队列是一个拥有权值观念的queue.它允许在底端添加元素.在顶端去除元素.删除元素. 优先级队列内部的元素并不是按照添加的顺序排列,而是自动依照元素的 ...

最新文章

  1. 机器学习与高维信息检索 - Note 4 - 主成分分析及其现代解释(Principal Component Analysis, PCA)及相关实例
  2. 美智库最新报告:小数据人工智能潜力不可估量
  3. ad策略下发_组策略--下发文件到计算机
  4. 蚁群算法,PSO算法以及两种算法可以融合的几种方法
  5. CentOS下Apache环境支持GBK编码解决网页乱码问题
  6. JSP听课笔记(一)
  7. (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法...
  8. ARP协议讲解、ARP攻击(网络执法官)、ARP中间人(Cain)、ARP攻击防御
  9. 青山~深入理解mysql
  10. python-合并两个列表并去重
  11. 免费售后——公司办公电脑配置单2500到4500档(包含显示器)
  12. 计算机网络(重点简单概括)
  13. 微软开放跨平台联机 索尼:我们早就这么做了
  14. 年后第一天上班就提辞职是不是“不厚道”???
  15. 易语言lsp劫持_[原创]不用导出任何函数的DLL劫持注入,完美!
  16. PHP简单实现“相关文章推荐”功能的方法
  17. Window xp与Win7对比
  18. 经典推荐算法之协同过滤
  19. 精英课堂 — 国内第一个MOOC培训学堂上线啦~~
  20. ERP系统窃取产品数据怎么办?

热门文章

  1. 关于MySQL查询优化 の 30条忠告
  2. 转:写的不错的eclipse配置cdt的文章
  3. Swift版音乐播放器(简化版),swift音乐播放器
  4. Html.ActionLink
  5. How to Review a Paper
  6. (第一次)NODEJS学习笔记
  7. python django升级安装sqlite3后在python命令行还是显示旧版本的解决办法
  8. docker ctr crictl命令对比图
  9. K8S operator方式部署redis-cluster
  10. 【收藏】批量导出docker镜像