long main()
{
ifstream fii;
long i;
long *a = new long [5000000+10];
fii.open("e:\\1.txt",ios::in);
for (i=0;i<=5000000-1;i++) {fii>>a[i];}
cout<<"start"<<endl;
heap_sort(a,5000000);
cout<<"end"<<endl;
getch();
for (i=0;i<=5000000-1;i++) cout<<a[i]<<endl;
getch();
delete [5000000+10]a;
return 0;
}
void heap_sort(long array[],long sizen)
{
register i,t;
array--;
for (i=sizen/2;i>=1;i--) {heapify(array,i,sizen);}
for (i=sizen;i>=2;i--)
{
t = array[1];array[1] = array[i];array[i] = t;
heapify(array,1,i-1);
}
}
void heapify(long array[],long i,long j)
{
long k = 2*i,x = array[i],t;
while (k<=j)
{
if (k<j) {if (array[k]<array[k+1]) {k++;}}
if (x>=array[k]) {break;}
else
{
t = array[i];array[i] = array[k];array[k] = t;
i = k;k *= 2;
}
}
}