Java实现堆排序

来源:互联网 发布:网络答题 搜题软件 编辑:程序博客网 时间:2024/05/22 12:12
package cn.java.array;import java.util.Arrays;public class HeapSort {public static void sort(int[] array) {if (array == null || array.length <= 1) {return;}BuildMaxHeap(array);int i = array.length - 1;while (i > 0) {swap(array,0,i);Heapify(array, 0, --i);}}// 构建最大堆public static void BuildMaxHeap(int[] array) {if (array == null || array.length <= 1) {return;}int lastIndex = (array.length - 1);//从最后一个根节点开始调整for (int i = (lastIndex - 1) / 2; i >= 0; i--) {Heapify(array, i, lastIndex);}}//lastIndex指向数组最后一个元素public static void Heapify(int[] array, int index, int lastIndex) {int left = 2 * index + 1;int right = 2 * index + 2;int largest = index;if (left <= lastIndex && array[left] > array[largest]) {largest = left;}if (right <= lastIndex && array[right] > array[largest]) {largest = right;}if (largest != index){ swap(array,largest,index); Heapify(array, largest, lastIndex);}}private static void swap(int[] array, int largest, int index) {// TODO Auto-generated method stubint temp=array[largest];array[largest]=array[index];array[index]=temp;}public static void main(String[] args) {// TODO Auto-generated method stubint[] num = new int[] { 53, 17, 78, 9, 45, 65, 87, 32 };int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 };  sort(array);System.out.println(Arrays.toString(array));}}

0 0