本文主要是介绍c++中的Heap算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
就排序而言,heap是一种特别的元素组织方式,应用与heap排序。heap课被视为一个以序列式群集实作而成的二叉树,具有两大性质
1.第一个元素总是最大。
2.总是能够在对数时间内增加或者移除一个元素。
heap是实作proority queue的一个理想结构,因此,heap算法也在priority_queue容器中有所应用吗,为了处理heap,stl提供了四种算法。
1.make_heap() 将某区间内的元素转化为heap
2.push_heap() 对着heap增加一个元素
3.pop_heap() 对着heap取出一个元素
4.sort_heap() 将heap转化为一个以序集群(此后就不在是heap了)
就像以前的情况一样,你可以传递一个二元判断式作为排序准则。缺省的排序准则是operator<。
heap算法细节
void make_heap(RandomAccessIterator beg , RandomAccessIterator end)
void make_heap(RandomAccessIterator beg , RandomAccessIterator end , BinaryPredicate op)
两种形式都将区间(beg,end)内的元素转化为heap。
op是一个可有可无的二元判断式,被视为是排序准则:op(elem1 , elem2)
只有在多于一个元素的情况系啊,才有必要使用这些函数来处理heap,如果只有单
这篇关于c++中的Heap算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!