void heap_adjust(int *a,int s,int t)
{
int j,rc;
rc=a[s];
for(j=2*s;j<=t;j*=2){
if(j<t&&a[j]<a[j+1])j++;
if(a[j]<rc)break;
a[s]=a[j];
s=j;
}
a[s]=rc;
}
void heap_sort(int *a,int n)
{
int i,temp;
for(i=n/2;i>=1;i--)heap_adjust(a,i,n);
for(i=n;i>1;i--)
{
temp=a[1];
a[1]=a[i];
a[i]=temp;
heap_adjust(a,1,i-1);
}
}