zoukankan      html  css  js  c++  java
  • 容器适配器————heap

    堆(heaps)不是容器,而是一种特别的数据组织方式。堆一般用来保存序列容器

    堆是一个完全二叉树,每个节点与其子节点位置相对。父节点总是大于或等于子节点,这种情况下被叫作大顶堆,或者父节点总是小于或等于子节点,这种情况下叫作小顶堆。注意,给定父节点的子节点不一定按顺序排列。

    创建堆

    用来创建堆的函数定义在头文件 algorithm 中。max_heap() 对随机访问迭代器指定的一段元素重新排列,生成一个堆。默认使用的是 < 运算符,可以生成一个大顶堆。

    make_heap(iterator first,iterator last);//将[first,last)范围进行堆排序,默认less<int>(),降序
    make_heap(iterator first,iterator last,less<int>());
    make_heap(iterator first,iterator last,greater<int>());//升序

    堆操作

    堆不是容器,而是组织容器元素的一种特别方式。只能确定堆的范围,即开始和结束迭代器指定的范围。这意味着可以用容器中的元素子序列创建堆。可以在已生成的堆中添加元素。

    pop_heap() 

    将front移动到end前一位,即末尾,然后将剩下的元素重新堆排序成一个新heap,使用的规则要个make_heap一样。

    pop_heap(iterator first ,iterator last, cmpObject);

    push_heap()

    对刚插入尾部push_back元素后做堆排序。

    push_heap(iterator first ,iterator last, cmpObject)

    sort_heap()

    将一个做排序,最终成为一个有序的系列,可以看到sort_heap时,必须先是一个堆(两个特性:1、最大元素在第一个 2、添加或者删除元素以对数时间),因此必须先做一次make_heap。

    sort_heap(iterator first ,iterator last, cmpObject)
  • 相关阅读:
    用Javascript进行简单的Table点击排序.
    asp也来玩三层?
    用在JavaScript的RequestHelper
    一个JavaScript方法的演变
    自己动手,实现jQuery中的ImageCopper.
    notes on relations
    mutex and condition variable
    virtual destructor
    virtual inheritance
    一道概率题
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11442397.html
Copyright © 2011-2022 走看看