Chinaunix首页 | 论坛 | 博客
  • 博客访问: 912402
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

分类: C/C++

2014-07-25 15:49:42

小根堆


如果有一个关键字的集合K={k0,k1,k2, ..., kn-1}, 把所有元素按完全二叉树的顺序存储
方式存放在一个一维数组中,并且满足
ki <= k2i+1 且 ki <= k2i+2  (i = 0, 1, ..., (n-2)/2 向上取整)
则称这个集合为小根堆。

小根堆的创建:
1. 复制堆数组
2. 找到最初的调整位置,即最后一个分支结点
3.1自底向上逐步扩大形成堆
3.2 向前换一个分支结点

小根堆的插入:
1. 将待插入元素插入已建成堆的最后面
2. 沿着出入位置所在的分支逐步向上调整

小根堆的删除:
1. 将顶元素删除

2. 将数组中最后一个元素放到堆顶

3. 自顶向下调整







阅读(1576) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~