Pagini recente » Cod sursa (job #2798338) | Cod sursa (job #2252190) | Cod sursa (job #3001928) | Cod sursa (job #2707823) | Cod sursa (job #659012)
Cod sursa(job #659012)
#include <fstream>
#include <queue>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N=500001;
queue <int> buckets[256];
int v[N],n,maxim,pozstart;
void RadixSort(){
int i,j,k,place,aux;
for(i=0;maxim;maxim>>=8,i+=8){
for(j=1;j<=n;++j){
place=((v[j]>>i)&255);
if(!(v[j]>>i)){
pozstart=j;
continue;
}
buckets[place].push(v[j]);
}
aux=pozstart;
for(j=0;j<=255;++j){
while(!buckets[j].empty()){
v[++aux]=buckets[j].front();
buckets[j].pop();
}
}
}
}
int main(){
int i;
in>>n;
for(i=1;i<=n;++i){
in>>v[i];
if(v[i]>maxim)
maxim=v[i];
}
RadixSort();
for(i=1;i<=n;i++){
out<<v[i]<<" ";
}
return 0;
}