排序算法Java实现——选择排序(堆排序)
来源:互联网 发布:z4 知乎 编辑:程序博客网 时间:2024/06/05 01:04
/*@(#)ArrayUtils.java 2017-4-22 * Copy Right 2017 Bank of Communications Co.Ltd. * All Copyright Reserved */package com.sort.cn;/** * TODO Document ArrayUtils * <p> * @version 1.0.0,2017-4-22 * @author Singit * @since 1.0.0 */public class ArrayUtils {public static void printArray(int[] array) { System.out.print("{"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); if (i < array.length - 1) { System.out.print(", "); } } System.out.println("}"); } public static void exchangeElements(int[] array, int index1, int index2) { int temp = array[index1]; array[index1] = array[index2]; array[index2] = temp; } }
/*@(#)HeapSort.java 2017-4-22 * Copy Right 2017 Bank of Communications Co.Ltd. * All Copyright Reserved */package com.sort.cn;/** * TODO Document HeapSort * <p> * @version 1.0.0,2017-4-22 * @author Singit * @since 1.0.0 */public class HeapSort {public static void main(String[] args) { int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; System.out.println("Before heap:"); ArrayUtils.printArray(array); heapSort(array); System.out.println("After heap sort:"); ArrayUtils.printArray(array); } public static void heapSort(int[] array) { if (array == null || array.length <= 1) { return; } buildMaxHeap(array); for (int i = array.length - 1; i >= 1; i--) { ArrayUtils.exchangeElements(array, 0, i); maxHeap(array, i, 0); } } private static void buildMaxHeap(int[] array) { if (array == null || array.length <= 1) { return; } int half = array.length / 2; for (int i = half; i >= 0; i--) { maxHeap(array, array.length, i); } } private static void maxHeap(int[] array, int heapSize, int index) { int left = index * 2 + 1; int right = index * 2 + 2; int largest = index; if (left < heapSize && array[left] > array[index]) { largest = left; } if (right < heapSize && array[right] > array[largest]) { largest = right; } if (index != largest) { ArrayUtils.exchangeElements(array, index, largest); maxHeap(array, heapSize, largest); } } }
输出结果:
Before heap:{9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3}After heap sort:{-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
1 0
- 排序算法Java实现——选择排序(堆排序)
- 排序(快排,冒泡,堆排序,插入排序,归并排序,选择排序)算法Java实现
- 排序算法--选择排序(简单选择排序、堆排序)java实现
- java实现排序算法之选择排序(简单选择排序和堆排序)
- Java排序算法总结之(三)——选择排序(简单选择排序、堆排序)
- java中的排序算法——简单选择排序,树形选择排序与堆排序(一)
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 算法之选择排序(2)——堆排序
- Java实现——选择排序、shell排序、合并排序、堆排序
- 数据结构&算法实践—【排序|选择排序】堆排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法Java实现——选择排序(直接选择排序)
- 选择排序—堆排序
- 选择排序—堆排序
- 堆排序算法——Java实现
- 算法—堆排序—Java实现
- Java实现排序算法——堆排序
- 选择排序之堆排序Java实现
- java语言基础(39)——面向对象(接口的引入及特点)
- css study
- LeetCode-M-Binary Tree Level Order Traversal
- mysqlの索引原理(Ⅱ)
- MAC下搭建MQTT客户端,测试发布和订阅话题
- 排序算法Java实现——选择排序(堆排序)
- java 浅拷贝与深拷贝 详解 画出内存图
- IEEE 浮点数格式
- 生成android toolchain
- 组件方式开发 Web App全站-7-图表组件-柱状图组件开发
- CSDN-markdown编辑器 使用指南
- weblogic安装步骤及遇到的问题
- matplotlib 可视化 —— style sheets
- 微信自定义分享--失效问题