Pagini recente » Cod sursa (job #1616931) | Cod sursa (job #2216326) | Cod sursa (job #1982483) | Cod sursa (job #529730) | Cod sursa (job #662156)
Cod sursa(job #662156)
#include <fstream>
#include <queue>
using namespace std;
#define Nmax 500001
#define biti 8
ifstream f("algsort.in");
ofstream g("algsort.out");
queue <int> bucket[256];
int v[Nmax], n, maximus;
void radix_sort();
int main()
{
int i;
f>>n;
for(i=1; i<=n; ++i)
{
f>>v[i];
if(v[i]>maximus) maximus=v[i];
}
radix_sort();
for(i=1; i<=n; ++i) g<<v[i]<<" ";
return 0;
}
void radix_sort()
{
int i, j, p, aux;
for(i=0; maximus; maximus>>=biti,i+=biti)
{
for(j=1; j<=n; ++j)
{
p=((v[j]>>i)&255);
bucket[p].push(v[j]);
}
aux=0;
for(j=0; j<=255; ++j)
while(!bucket[j].empty())
{
v[++aux]=bucket[j].front();
bucket[j].pop();
}
}
}