public static void heapSort(int[] data){
for(int j=0;j<data.length-1;j++){
createMaxHeap(data,j);
}
}
public static void createMaxHeap(int[] data,int start){
int max=(data.length-start)>>1,i=max-1;
int lchild,rchild,lindex,rindex,index;
while(i>=0){
lindex = 2*i+1+start;
rindex = 2*i+2+start;
index = i+start;
lchild=data[lindex];
if(lchild>data[index]){
data[lindex] = data[index];
data[index] = lchild;
}
if(data.length-1>=rindex){
rchild=data[rindex];
if(rchild>data[index]){
data[rindex] = data[index];
data[index]=rchild;
}
}
i--;
}
}
public static void main(String[] args){
int[] data = {1,5,4,6,9,7,3};
heapSort(data);
for(int i:data){
System.out.printf("%d,",i);
}
}