Cod sursa(job #1167264)

Utilizator toncuvasileToncu Vasile toncuvasile Data 4 aprilie 2014 18:21:38
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<queue>
#include<ctime>
using namespace std;

ifstream inFile("algsort.in");
ofstream outFile("algsort.out");

void ReadVector(int *, int);
void PrintVector(int *, int);
void RadixSort(int *, int);


int main(){
	int A[500005],n;
	inFile>>n;

	ReadVector(A,n);

	RadixSort(A,n);

	PrintVector(A,n);

}

void ReadVector(int *A, int n)
{
	for(int i=0;i<n;i++){
		inFile>>A[i];
	}
}

void PrintVector(int *A, int n)
{
	for(int i=0;i<n;i++){
		outFile<<A[i]<<" ";
	}
}

void RadixSort(int *A, int n)
{
	queue <int> Q[10];
	for(long long p=10;p<=100000000000;p=10*p){
		//introducem elementele tabloului A in cozile Q dupa cifra considerata.
		for(int i=0;i<n;i++){            
			Q[(A[i]%p)/(p/10)].push(A[i]);
		}
	    
		//golim cozile in tabloul A
		int k=0;
		for(int i=0;i<10;i++){
			while(!Q[i].empty()){
				A[k++]=Q[i].front();
				Q[i].pop();
			}
		}
	}
}