堆排序
来源:互联网 发布:西安行知教育地址 编辑:程序博客网 时间:2024/06/06 14:01
/** * 构建大顶堆 */public static void adjustHeap(int[] array, int i, int len) { int temp, j; temp = array[i]; for (j = 2 * i; j < len; j *= 2) {// 沿关键字较大的孩子结点向下筛选 if (j < len && array[j] < array[j + 1]) ++j; // j为关键字中较大记录的下标 if (temp >= array[j]) break; array[i] = array[j]; i = j; } array[i] = temp;}public static void heapSort(int[] a) { int i; for (i = a.length / 2 - 1; i >= 0; i--) {// 构建一个大顶堆 adjustHeap(a, i, a.length - 1); } for (i = a.length - 1; i >= 0; i--) {// 将堆顶记录和当前未经排序子序列的最后一个记录交换 int temp = a[0]; a[0] = a[i]; a[i] = temp; adjustHeap(a, 0, i - 1);// 将a中前i-1个记录重新调整为大顶堆 }}public static void main(String[] args) { int a[] = { 51, 46, 20, 18, 65, 97, 82, 30, -1, 50 }; heapSort(a); System.out.println(Arrays.toString(a));}
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- Android Studio导入第三方类库、jar包和so库
- Oracle数据安全解决方案-
- Matlab: figure的用法
- SQL 2008安装图解
- Mybatis 一对一,一对多,多对一,多对多的理解
- 堆排序
- log 的 debug()、 error()、 info()方法的区别
- C和C++中的名字空间和作用域
- SCUT Training 20170913 Problem I
- Django操作数据库
- Android新特性介绍,ConstraintLayout完全解析
- 素数筛实现素数的快速筛选
- 梯度下降-Momentum
- AS3.0 迁移解决方案 apk命名打包异常