Pagini recente » Cod sursa (job #1568932) | Cod sursa (job #93063) | Cod sursa (job #1340470) | Cod sursa (job #1872022) | Cod sursa (job #1222085)
# include <fstream>
# include <cstring>
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");
const int nmax=500005;
typedef struct node
{
int x;
node *next;
} *nod;
nod a[2];
int s[nmax],k[2];
int read()
{
char c[30];
fi>>c;
int k=strlen(c),p=0;
for (int i=0;i<k;++i) p=p*10+c[i]-'0';
return p;
}
void sort(int p,int u,int b)
{
if (b<0 || p>=u) return;
int m=1<<b;
a[0]=a[1]=NULL;
k[0]=k[1]=0;
bool c;
nod l;
for (int i=p;i<=u;++i)
{
c=(s[i] & m);
l=new node;
l->x=s[i];l->next=a[c];a[c]=l;
}
int w=p-1;
for (int i=0;i<2;++i)
for (nod l=a[i];l;++k[i],l=l->next) s[++w]=l->x;
sort(p,p+k[0]-1,b-1);
sort(u-k[1]+1,u,b-1);
}
int main(void)
{
int n=read();
for (int i=1;i<=n;++i) s[i]=read();
sort(1,n,31);
for (int i=1;i<=n;++i) fo<<s[i]<<" ";
fo.close();
return 0;
}