STL——heap算法
1、就排序而言,heap是一种特别的元素组织方式,应用于heap排序法(heapsort)。Heap可被视为一个以序列式集合实现而成的二叉树,具有两大性质:
(1)第一个元素总是最大。
(2)总是能够在对数时间内增加或移除一个元素。
2、STL中提供了4个算法:默认的排序准则是 operator<,也可以传入一个binary predicate 作为排序准则。
(1)make_heap():将某个区间内的元素转化为heap;
void make_heap(RandomAccessIterator beg, RandomAccessIterator end)
void make_heap(RandomAccessIterator beg, RandomAccessIterator end, BinaryPredicate op)
- 两种形式都将[beg,end)区间内的元素转化为heap。
- op是个可有可无的(可选的)binary predicate,被视为排序准则,op(elem1,elem2)
- 只有在多于一个元素的情况下,才有必要使用这些函数处理heap,如果只有单一元素,那么它自动形成一个heap。
- 复