Cod sursa(job #1081438)

Utilizator AllxCucuCucu Alexandru AllxCucu Data 13 ianuarie 2014 17:09:36
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <string.h>
using namespace std;
#define COUNT_N 256
#define BYTE 8
#define N_MAX 500004
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int a[N_MAX],b[N_MAX],count[COUNT_N],ind[COUNT_N];
void rad(int *a,int *b,int byte,int n)
{
	memset(count,0,sizeof(count));
	int i,Lm = COUNT_N - 1;
	for(i = 0; i < n; ++i)
	++count[(a[i]>>byte)&Lm];
	for(i = 0;i < COUNT_N; ++i)
	ind[i] = ind[i-1] + count[i-1];
	for(i = 0; i < n; ++i)
	b[ind[(a[i]>>byte)&Lm]++] = a[i];
}
void radix(int *a,int n)
{
	rad(a,b,0 ,n);
	rad(b,a, BYTE,n);
	rad(a,b,2*BYTE,n);
	rad(b,a,3*BYTE,n);
}
int main()
{
	int a[N_MAX],i,n;
	cin>>n;
	for(i=0; i<n; i++)
	cin>>a[i];
	radix(a, n);
	for(i=0; i<n; i++)
	cout<<a[i]<<' ';
	return 0;
}