package com.inner; public class HeapSort { /** * ������ * @param args */ public static void main(String[] args) { int[] arr = new int[]{1,2,3,4,6,5}; System.out.println("before heapsort"); Utils.printArray(arr); heapsort(arr); System.out.println("after heapsort"); Utils.printArray(arr); } public static void heapsort(int[] arr){ if(arr==null||arr.length<=1){ return; } buildMaxHeap(arr); for(int i=arr.length-1;i>=1;i--){ Utils.exchangeElements(arr, 0, i); maxHeap(arr,i,0); } } public static void buildMaxHeap(int[] arr){ int half = arr.length/2; for(int i= half;i>=0;i--){ maxHeap(arr,arr.length,i); } } public static void maxHeap(int[] arr,int heapsize,int index){ int left = 2*index+1; int right = 2*index+2; int largest = index; if(left< heapsize&&arr[left]>arr[largest]){ largest=left; } if(right< heapsize&&arr[right]>arr[largest]){ largest=right; } if(index!=largest){ Utils.exchangeElements(arr, largest, index); maxHeap(arr,heapsize,largest); } } }
堆排序实现
最新推荐文章于 2024-09-01 17:19:15 发布