堆排序

堆:

  二叉堆数据结构是一种数组对象,可以被视为一棵完全二叉树

  父节点:Parent(i) = i/2

  左子节点:Left(i) = 2i

  右子节点:Right(i) = 2i+1

 

 

最大堆:

  除了根以外的节点的值至多和父结点的值一样大,最大元素就在根节点

最小堆:

  相反

 

 

堆排序算法:

 

 

 

 

优先级队列:

  快速排序的一个好的实现往往优于堆排序

  优先级队列是一种用来维护由一组元素构成的集合S的数据结构,这一组元素中的每一个都有一个关键字key

  一个最大优先级队列支持以下操作:

    1 insert:插入

    2 maximum:返回S中具有最大关键字的元素

    3 extract-max:去掉并返回s中具有最大关键字的元素

    4 increase-key:将元素x的关键字的值增加到k,这里k值不能小于x的原关键字的值

    

posted @ 2013-12-17 07:54  褐色键盘  阅读(122)  评论(0)    收藏  举报