Pagini recente » Cod sursa (job #2368203) | Cod sursa (job #3144970) | Cod sursa (job #2687687) | Cod sursa (job #2791217) | Cod sursa (job #976015)
Cod sursa(job #976015)
#include <iostream>
#include <fstream>
using namespace std;
unsigned int v[500001],ax;
unsigned int i,p,n;
int main(void)
{
FILE * f;
f=fopen("algsort.in","r");
ofstream g("algsort.out");
fscanf(f,"%d",&n);
v[0]=0;
for (i=1;i<=n;i++)
{
fscanf(f,"%ud",&ax);
v[i]=ax;
p=i;
while (v[p]<v[p/2])
{
ax=v[p];
v[p]=v[p/2];
v[p/2]=ax;
p=p/2;
}
}
while (n>1)
{
g<<v[1]<<' ';
v[1]=v[n];
n--;
p=1;
while (((v[(p*2)%500001]<v[p])&&(p*2<=n))||((v[(p*2+1)%500001]<v[p])&&(p*2+1<=n)))
{
if (((v[(p*2)%500001]<=v[(p*2+1)%500001])&&(p*2<=n))||(p*2+1>n))
{
ax=v[p];
v[p]=v[p*2];
v[p*2]=ax;
p=p*2;
}
else
{
ax=v[p];
v[p]=v[p*2+1];
v[p*2+1]=ax;
p=p*2+1;
}
}
}
g<<v[1];
g.close();
return 0;
}