Pagini recente » Cod sursa (job #94449) | Cod sursa (job #1258560) | Cod sursa (job #870842) | Cod sursa (job #1711089) | Cod sursa (job #583006)
Cod sursa(job #583006)
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
union Element
{
int x;
unsigned char c[4];
};
list<Element> elements;
list<Element> buckets[256];
void sort_bucket(list <Element> &elist, int radix)
{
for(int i=0; i<256; ++i)
buckets[i].clear();
while(!elist.empty())
{
buckets[elist.front().c[radix]].push_back(elist.front());
elist.pop_front();
}
for(int i=0; i<256; ++i)
elist.splice(elist.end(), buckets[i]);
}
void sort_radix(list<Element> &elist, int n)
{
int radix;
for(radix=0; radix<4; ++radix)
sort_bucket(elist, radix);
}
int main ()
{
int n;
cin>>n;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
Element current;
for(int i=0; i<n; ++i)
{
cin>>current.x;
elements.push_back(current);
}
sort_radix(elements, n);
for(list<Element>::iterator it=elements.begin(); it!=elements.end(); ++it)
cout<<it->x<<" ";
return 0;
}