void Adjust(int *arr,int start,int end)
{
int tmp = arr[start];
for(int i = 2*start+1;i <= end;i = 2*i+1)
{
if((i+1 <= end) && (arr[i] < arr[i+1]))
{
i++;
}
if(arr[i] > tmp)
{
arr[start] = arr[i];
start = i;
}
else
{
break;
}
}
arr[start] = tmp;
}
void HeapSort(int *arr,int len)
{
int tmp;
int i;
for(i = (len-1-1)/2;i >= 0;i--)
{
Adjust(arr,i,len-1);
}
for(i = 0;i < len-1;i++)
{
tmp = arr[0];
arr[0] = arr[len-1-i];
arr[len-1-i] = tmp;
Adjust(arr,0,len-1-i-1);
}
}