【Java】堆排序的Java实现
来源:互联网 发布:oppo软件开放平台 编辑:程序博客网 时间:2024/06/05 05:47
参考算法(第4版)
堆排序大致分两个部分:1、遍历所有父节点,完成堆的构造。
2、遍历所有节点,下沉排序。
注意点:堆用数组表示时,是从下标1开始的。
下面是代码部分:
package Algorithms;public class HeapSort {public static int[] a = { 0, 40, 2, 54, 25, 5, 123, 3, 0, 12, 5 };// a[0]不参与排序,因为二叉堆是从数组下标1开始的public static int N = a.length-1;//二叉堆的结点个数public static void main(String[] args) {sort(a);for(int i = 1;i < a.length;i++){System.out.print(a[i]+" ");}}// 堆排序public static void sort(int[] a) {// 堆的构造for (int k = N / 2; k >= 1; k--) {sink(k);}// 下沉排序while (N > 1) {exch(a, 1, N--);sink(1);}}// 由上而下的堆的有序化的实现private static void sink(int k) {while (2 * k <= N) {int j = 2 * k;if (j < N && less(j, j + 1)) {j++;}if (!less(k, j)) {break;}exch(a, k, j);k = j;}}// 比大小private static boolean less(int v, int w) {return a[v] < a[w];}// 交换数组的值private static void exch(int[] a, int i, int j) {int t = a[i];a[i] = a[j];a[j] = t;}}
0 0
- 堆排序的java实现
- 堆排序的JAVA实现
- Java 堆排序的实现
- 堆排序的JAVA实现
- 堆排序的JAVA实现
- 堆排序的Java实现
- 堆排序的java实现
- 堆排序的java实现
- 堆排序的java实现
- 堆排序的Java实现
- 堆排序的Java实现
- 堆排序的Java实现
- 堆排序的Java实现
- 堆排序的java实现
- java实现的堆排序(java)
- 【Java】堆排序的Java实现
- 堆排序Java实现
- 堆排序-java实现
- Java解惑2
- 触发器学习《三》 常见问题、注意事项
- python 验证码
- 利用jsshell 实现的学生信息管理系统
- 各种情况下的方法调用
- 【Java】堆排序的Java实现
- Java之字节流(文件输入、输出流)
- 字符串------表示数值的字符串
- QT中实现二维码图片生成
- Linux ALSA声卡驱动之一:ALSA架构简介
- 修改input输入框的样式
- UILabel行距设置
- QT写入txt文件
- nodejs连接sqlserver数据库支持事物封装-mssql模块