package java面试宝典;
import java.util.Arrays;
public class 堆排序 {
public static void main(String[] args) {
int[] a={6,9,3,5,7,1,8,0,2,4};
System.out.println(Arrays.toString(a));
heapSort(a);
System.out.println(Arrays.toString(a));
}
public static void heapSort(int[] a){
for (int i = a.length/2-1; i >=0; i--) {
adjHeap(a, i,a.length);
}
for (int i = a.length-1; i >0; i--) {
swap(a, 0, i);
adjHeap(a, 0,i);
}
}
public static void swap(int[] a,int i,int j){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public static void adjHeap(int[] a,int i,int len){
for (int k = 2*i+1; k < len; k=2*i+1) {
if(k+1<len&&a[k]<a[k+1]){
k++;
}
if(a[i]<a[k]){
int temp=a[i];
a[i]=a[k];
a[k]=temp;
i=k;
}else{
break;
}
}
}
}