[刷题]Heapify
2015-08-31 15:12
162 查看
[LintCode]Heapify
public class Solution { /** * @param A: Given an integer array * @return: void */ public void heapify(int[] A) { // 从树的最后一个点开始,一层一层地向上遍历 for (int i = A.length - 1; i >= 0; i--) { siftdown(A, i); } } /** * 确保k表示的位置的值,在以它为根的子树中最小 */ private void siftdown(int[] A, int k) { if (k >= A.length) { return; } // 三个点中最小点的序号 int minIndex = k; // 和左子比 if (k * 2 + 1 < A.length && A[k * 2 + 1] < A[minIndex]) { minIndex = k * 2 + 1; } // 和右子比 if (k * 2 + 2 < A.length && A[k * 2 + 2] < A[minIndex]) { minIndex = k * 2 + 2; } // 既比左子小又比右子小,则退出 if (minIndex == k) { return; } // 交换数组中的两个数 int temp = A[minIndex]; A[minIndex] = A[k]; A[k] = temp; // 别忘了:继续追踪这个大数 siftdown(A, minIndex); return; } }
相关文章推荐
- 利用Qt.locale显示本地化数据
- HDU2955-Robberies-01背包
- uva 11624 大火蔓延的迷宫 BFS
- 关于MongoDb的简单入门
- Makefile.am 语法
- JNI知识积累
- C++中的常量折叠问题
- Windows 2008 R2删除孤立子域0X2162 解决办法
- 音乐播放器代码解释
- 深入浅出RxJava(一:基础篇)
- 用Android Studio 导出jar包
- 【bzoj2818】【GCD】【数论】
- 修改本地活动网络连接的DNS
- 如何获得你的准确位置及iphon手机应用定位不准确原因分析
- 关于Qt Designer.exe无法启动的问题
- Eclipse 安装插件后不显示的解决办法
- iOS利用block实现链式编程方法(Objective-C链式编程)
- OC之ARC环境中的循环strong问题
- STM32访问外部存储器的时序计算
- RTEMS 介绍