Pagini recente » Cod sursa (job #880073) | Cod sursa (job #2325185) | Cod sursa (job #462475) | Cod sursa (job #378307) | Cod sursa (job #1199806)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");
unsigned int n,v[500001];
void coboara(int nod)
{int fiu;
if (nod*2<=n) fiu=nod*2;
else return;
if (nod*2+1<=n&&v[fiu+1]<v[fiu]) fiu=fiu+1;
swap(v[nod],v[fiu]);
coboara(fiu);
}
void urca(int nod)
{if (nod==1) return;
if (v[nod]<v[nod/2]) {swap(v[nod],v[nod/2]);
urca(nod/2);
}
}
int main()
{int i;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++) {fscanf(f,"%d",&v[i]);
urca(i);
}
for (i=1;i<=n;i++) {fprintf(g,"%d ",v[1]);
v[1]=1<<31;
coboara(1);
}
return 0;
}