function headSort(arr){
buildHeap(arr);
var len = arr.length;
for(var i=len-1;i>0;i--){
swap(arr,0,i);
heapify(arr,i);
}
return arr;
}
function buildHeap(arr){
var len = arr.length;
if(len == 0)
return;
for(var i=Math.floor(len/2);i>0;i--){
heapify(arr,i);
}
}
function heapify(arr,i){
var left = 2*i+1;
var right = 2*i+2;
var largest = i;
var len = arr.length;
if(left <len && arr[left]>arr[largest]){
largest=left;
}
if(right <len && arr[right]>largest){
largest=right;
}
if(largest != i){
swap(arr,i,largest);
heapify(arr,largest);
}
}
function swap(arr,i,j){
var temp=arr[i];
arr[i] = arr[j];
arr[j] = temp;
}