Pagini recente » Cod sursa (job #2241132) | Cod sursa (job #2738833) | Cod sursa (job #2447439) | Cod sursa (job #1218477) | Cod sursa (job #1315524)
#include<iostream>
#include<fstream>
using namespace std;
int a[500000],n,i;
void heapsort(int a[500000], int N)
{
if(N==0) return;
int t;
int n=N,p=N/2,index,c;
while (1)
{
if(p>0) t = a[--p];
else
{n--;
if (n==0) return;
t=a[n];
a[n]=a[0];}
index=p;
c=index * 2 + 1;
while(c<n)
{ if(c+1<n && a[c+1]>a[c]) c++;
if (a[c]>t)
{a[index]=a[c];
index=c;
c=index * 2 + 1;}
else break;}
a[index]=t;
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=0;i<n;i++) f>>a[i];
heapsort(a,n);
for(i=0;i<n;i++) g<<a[i]<<' ';
f.close();
g.close();
return 0;
}