大根堆 - max heapify
2016-04-18 20:55
316 查看
大根堆调整(递归形式)
大根堆调整(非递归形式)
-> 初始化序列成大根堆
-> 从每个子堆开始调整,
-> 因此,调整堆的操作既可用于建堆,又可用于调整堆
def heapify(dList, root, boundary): child = root * 2 + 1 large = root if child <= boundary and dList[large] <= dList[child]: large = child if child+1 <= boundary and dList[large] <= dList[child+1]: large = child + 1 if large != root: dList[root], dList[large] = dList[large], dList[root] heapify(dList, large, boundary) return dList
大根堆调整(非递归形式)
def heapifyNOR(dList, root, boundary): child = root * 2 + 1 large = root while child <= boundary: if dList[large] <= dList[child]: large = child if child+1 <= boundary and dList[large] <= dList[child+1]: large = child + 1 if large == root: break dList[root], dList[large] = dList[large], dList[root] root = large child = root * 2 + 1 return dList
大根堆 -> 得到递增序列
小根堆 -> 得到递减序列
堆的调整,基于前提:所有子堆都满足大根堆的性质-> 初始化序列成大根堆
-> 从每个子堆开始调整,
-> 因此,调整堆的操作既可用于建堆,又可用于调整堆
相关文章推荐
- java设计模式
- 使用指针ptr指针访问像素,并且减少颜色数量
- POJ 1741
- zoj 3469 Food Delivery 区间DP
- 伪静态与静态
- 小猫统计未来功能规划
- CSS继承多个同样属性时的行为
- 聊聊Socket、TCP/IP、HTTP、FTP及网络编程
- 站立会议第一天
- 构建之法阅读笔记07
- JDK 1.7 1.8 新特性
- 腾讯前端实习生(一面)
- 136. Single Number
- 蛤玮当上主席
- Http协议分析
- [网络诈骗]BEC(Business Email Compromise 企业邮件受骇)
- MFC中OnDraw与OnPaint的区别
- js 滑窗
- Retrofit 2.0 + OkHttp 3.0+JSON网络请求
- hive