Pagini recente » Cod sursa (job #3255734) | Cod sursa (job #2653837) | Cod sursa (job #2042388) | Cod sursa (job #1795659) | Cod sursa (job #1167260)
#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(int p=10;p<=1000;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();
}
}
}
}