public class HeapSort {
public static void main(String[] args) {
int[] arr={2,3,1,4,7,5};
new HeapSort().sort(arr);
}
public void sort(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 tmp=arr[i];
arr[i]=arr[0];
arr[0]=tmp;
heapify(arr,i,0);
}
}
private void heapify(int[] arr,int n,int i){
int max=i;
int left=2*i+1;
int right=2*i+2;
if(left<n&&arr[left]>arr[max])
max=left;
if(right<n&&arr[right]>arr[max])
max=right;
if(max!=i){
int tmp=arr[max];
arr[max]=arr[i];
arr[i]=tmp;
heapify(arr,n,max);
}
}
}