码迷,mamicode.com
首页 > 其他好文 > 详细

【笔记】【数据结构】二叉堆

时间:2014-05-09 09:38:29      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:c   数据   数据结构   block   结构   预处理   

作用:

插入元素,O(lgN)

修改元素,O(lgN)

删除元素,O(lgN)

查询元素,O(1)

动态查询最值,O(NlgN)-O(lgN)-O(1)

核心操作:

上浮与下沉

最小堆:上浮是指较小值上浮,下沉是指较大值下沉。

最大堆:上浮是指较大值上浮,下沉是指较小值下沉。

具体操作:

  1. 预处理中,对所有的根节点下沉操作,即交换根节点与一个较小的子节点,然后接着将子节点作为根节点,进行下一次下沉操作。
  2. 插入元素时,将它放入最底层,并不断地上浮。
  3. 删除堆顶元素时,将堆顶元素与最后一个元素交换,然后下沉。
  4. 修改元素时,首先查询元素的地址,随后修改值,接着上浮下沉各一次以保持堆的性质。
  5. 删除元素时,先修改为负无穷大,然后上浮到堆顶,删除堆顶。

【笔记】【数据结构】二叉堆,布布扣,bubuko.com

【笔记】【数据结构】二叉堆

标签:c   数据   数据结构   block   结构   预处理   

原文地址:http://www.cnblogs.com/polossk/p/3716903.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!