publicclassHeapSort{publicstaticvoidheapSort(int[] arr){int n = arr.length;// 构建最大堆for(int i = n /2-1; i >=0; i--){heapify(arr, n, i);}for(int i = n -1; i >0; i--){// 交换堆顶元素和最后一个元素int temp = arr[0];
arr[0]= arr[i];
arr[i]= temp;// 调整堆heapify(arr, i,0);}}privatestaticvoidheapify(int[] arr,int n,int i){int largest = i;int l =2* i +1;int r =2* i +2;if(l < n && arr[l]> arr[largest]){
largest = l;}if(r < n && arr[r]> arr[largest]){
largest = r;}if(largest!= i){int temp = arr[i];
arr[i]= arr[largest];
arr[largest]= temp;heapify(arr, n, largest);}}publicstaticvoidmain(String[] args){int[] arr ={5,4,3,2,1};System.out.println("Before sorting:");for(int num : arr){System.out.print(num +" ");}System.out.println();heapSort(arr);System.out.println("After sorting:");for(int num : arr){System.out.print(num +" ");}}}