Cod sursa(job #551544)

Utilizator blastoiseZ.Z.Daniel blastoise Data 10 martie 2011 20:59:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <string.h>

using namespace std;

int i,N;
int v[500001],x[500001];

inline void radix(int byte,int a[],int b[])
{
	int count[32];
	int index[32];

	int i;

	memset(count,0,sizeof(count));
	memset(index,0,sizeof(index));

	for(i=0;i<N;i++) count[(a[i]&(31<<(byte*4)))>>(byte*4)]++;

	index[0]=0;
	for(i=1;i<32;i++) index[i]=index[i-1]+count[i-1];
	for(i=0;i<N;i++) b[index[(a[i]&(31<<(byte*4)))>>(byte*4)]++]=a[i];

}

int main()
{
	ifstream in("algsort.in");
	ofstream out("algsort.out");

	in>>N;

	for(i=0;i<N;i++) in>>v[i];

	radix(0,v,x);
	radix(1,x,v);
	radix(2,v,x);
	radix(3,x,v);
	radix(4,v,x);
	radix(5,x,v);
	radix(6,v,x);
	radix(7,x,v);

	for(i=0;i<N-1;i++) out<<v[i]<<' ';
	out<<v[N-1]<<'\n';

	return 0;
}