Java 大堆排序从0开始
来源:互联网 发布:创世数据网 编辑:程序博客网 时间:2024/06/08 11:02
public class HeapSortFrom0 { /* 51 46 20 18 -10 82 65 30 77 97 101 85 */ /** * 构建大顶堆 */ public static void adjustHeap(int[] a, int i, int len) { int temp; temp = a[i];//最后一个节点的父节点 for (int j = 2 * i + 1; j <= len; j = 2 * j + 1) {// 沿关键字较大的孩子结点向下筛选 if (j + 1 <= len && a[j] < a[j + 1]) ++j; // j为关键字中较大记录的下标 if (temp >= a[j]) break; a[i] = a[j]; i = j; a[i] = temp; } } public static void heapSort(int[] a) { int i; for (i = ((a.length - 1) - 1) / 2; i >= 0; i--) {// 构建一个大顶堆 adjustHeap(a, i, a.length - 1); } //System.out.println(Arrays.toString(a)); //System.exit(0); 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, -10, 82, 65, 30, 77, 97,101,85}; heapSort(a); System.out.println(Arrays.toString(a)); }}
阅读全文
0 0
- Java 大堆排序从0开始
- 大堆排序,TOP K 问题
- Java从0开始
- C++ 堆排序算法(大堆)
- 从快速排序开始
- JAVA 从0开始 一
- JAVA 从0开始 二
- JAVA 从0开始 三
- JAVA 从0开始 四
- Java从0开始 1
- 非递归堆排序改进,从下标0开始排序
- Java 从0开始……
- java从0开始开发网站
- 从0开始复习java(1)
- 从0开始复习java(2)
- 从0开始复习java(3)
- 从0开始读java源码
- java关于IO从0开始【第一节】
- Git使用提交代码遇到『Everything up-to-date』
- Extjs中使用Echarts(自适应)
- 随笔--工作一月
- 小游戏
- leetcode 349[easy]---Intersection of Two Arrays
- Java 大堆排序从0开始
- bootstrap 布局图片列表
- Android的CheckBox控件设置自定义图片
- 建设数据中心机房主要看这几点,否则被定为劣质机房!!!
- DUBBO常用xml配置总结与分类
- 3分钟学会sessionStorage用法
- 进程间通信方式----管道通信
- 第十四讲 适配器模式、内部类、递归算法、数据结构之链表、包装类、Eclipse开发环境设置
- 多线程三种实现方式/IO流模拟用户注册及登录