Cod sursa(job #2076444)

Utilizator Andrei243Nitu Mandel Andrei Andrei243 Data 26 noiembrie 2017 16:45:31
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 2.03 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <limits.h>
using namespace std;

queue<int> radix0,radix1,radix2,radix3,radix4,radix5,radix6,radix7,radix8,radix9;
queue<int> vector_sort;
ofstream out("algsort.out");



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


int n;
in>>n;
int x;
int maxim=INT_MIN;
for(int i=0;i<n;i++){
in>>x;
vector_sort.push(x);
if(x>maxim)maxim=x;
}

for(int i=1;maxim/i>0;i*=10){

int x;
while(vector_sort.size()){
x=vector_sort.front();
vector_sort.pop();
switch(x){

case 0:radix0.push(x);break;
case 1:radix1.push(x);break;
case 2:radix2.push(x);break;
case 3:radix3.push(x);break;
case 4:radix4.push(x);break;
case 5:radix5.push(x);break;
case 6:radix6.push(x);break;
case 7:radix7.push(x);break;
case 8:radix8.push(x);break;
case 9:radix9.push(x);break;



}

}
for(i=0;i<10;i++){
    switch(i){

case 0:{
    while(radix0.size()>0){
x=radix0.front();
radix0.pop();
vector_sort.push(x);}break;}
case 1:{
    while(radix1.size()>0){
x=radix1.front();
radix1.pop();
vector_sort.push(x);}break;}
case 2:{
    while(radix2.size()>0){
x=radix2.front();
radix2.pop();
vector_sort.push(x);}break;}
case 3:{
    while(radix3.size()>0){
x=radix3.front();
radix3.pop();
vector_sort.push(x);}break;}
case 4:{
    while(radix4.size()>0){
x=radix4.front();
radix4.pop();
vector_sort.push(x);}break;}
case 5:{
    while(radix5.size()>0){
x=radix5.front();
radix5.pop();
vector_sort.push(x);}break;}
case 6:{
    while(radix6.size()>0){
x=radix6.front();
radix6.pop();
vector_sort.push(x);}break;}
case 7:{
    while(radix7.size()>0){
x=radix7.front();
radix7.pop();
vector_sort.push(x);}break;}
case 8:{
    while(radix8.size()>0){
x=radix8.front();
radix8.pop();
vector_sort.push(x);}break;}
case 9:{
    while(radix9.size()>0){
x=radix9.front();
radix9.pop();
vector_sort.push(x);}break;}



}



    }
}


}

while(vector_sort.size()){
int x=vector_sort.front();
out<<x<<' ';
vector_sort.pop();


}

    return 0;
}