package q;
import java.util.Arrays;
public class c {
public static void main(String[] args) {
int A[]= {38,6,34,11,81,18,61,47,99};
sort(A);
System.out.println(Arrays.toString(A));
}
static void makeMinHeap(int []A)
{
int n=A.length;
for(int i=n/2-1;i>=0;i--)
{
MinHeapFixDown(A,i,n);
}
}
private static void MinHeapFixDown(int[] A, int i, int n) {
// TODO Auto-generated method stub
int left=i*2+1;
int right=i*2+2;
if(left>=n)
return;
int min=left;
if(right>=n)
{
min=left;
}
else {
if(A[right]<A[left])
{
min=right;
}
}
if(A[i]<A[min])
{
return;
}
int temp=A[i];
A[i]=A[min];
A[min]=temp;
MinHeapFixDown(A,min,n);
}
static void sort(int []A)
{
makeMinHeap(A);
for(int x=A.length-1;x>=0;x--)
{
// Util.swap(A,0,x);
int temp=A[0];
A[0]=A[x];
A[x]=temp;
MinHeapFixDown(A,0,x);
}
}
}