Pagini recente » Cod sursa (job #1616950) | Cod sursa (job #1367841) | Cod sursa (job #2190443) | Cod sursa (job #1193436) | Cod sursa (job #663220)
Cod sursa(job #663220)
//radix sort
#include <fstream>
#include <queue>
using namespace std;
#define Nmax 500001
#define biti 8
ifstream f("algsort.in");
ofstream g("algsort.out");
queue <int> buck[256];
int arr[Nmax], n, nrmax;
void radix();
int main()
{
int i;
f>>n;
for(i=1; i<=n; ++i)
{
f>>arr[i];
if(arr[i]>nrmax)
nrmax=arr[i];
}
radix();
for(i=1; i<=n; ++i)
g<<arr[i]<<" ";
return 0;
}
void radix()
{
int i, j, p, aux;
for(i=0; nrmax; nrmax>>=biti,i+=biti)
{
for(j=1; j<=n; ++j)
{
p=((arr[j]>>i)&255);
buck[p].push(arr[j]);
}
aux=0;
for(j=0; j<=255; ++j)
while(!buck[j].empty())
{
arr[++aux]=buck[j].front();
buck[j].pop();
}
}
}