堆排序Java代码

来源:互联网 发布:淘宝卖家倒闭 编辑:程序博客网 时间:2024/05/16 23:38
package algorithms;import java.util.Random;public class MaxHeapify {private static int heapSize;public static void main(String[] args) {Random rand = new Random();int[] a = new int[rand.nextInt(100)];for (int i = 0; i < a.length; i++)a[i] = rand.nextInt(100);heapSort(a);for (int i : a)System.out.print(i + " ");}private static void heapSort(int[] a) {heapSize = a.length;buildMaxHeap(a);for (int i = a.length - 1; i >= 1; i--) {swap(a, i, 0);heapSize = heapSize - 1;maxHeapify(a, 0);}}private static void swap(int[] a, int i, int j) {int temp = a[i];a[i] = a[j];a[j] = temp;}private static void buildMaxHeap(int[] a) {for (int i = a.length / 2; i >= 0; i--) {maxHeapify(a, i);}}private static void maxHeapify(int[] a, int i) {int l = left(i);int r = right(i);int largest = i;if (l < heapSize && a[l] > a[i])largest = l;elselargest = i;if (r < heapSize && a[r] > a[largest])largest = r;if (largest != i) {swap(a, i, largest);maxHeapify(a, largest);}}private static int left(int i) {return 2 * i;}private static int right(int i) {return 2 * i + 1;}}


输入为:

原创粉丝点击