Cod sursa(job #643175)

Utilizator yamahaFMI Maria Stoica yamaha Data 3 decembrie 2011 08:45:21
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.49 kb
#include <stdio.h>
#include <vector>
#include <math.h>
using namespace std;
 
vector < vector <int> > buckets;
 
void printSorted(int x[],int length);
void radixSort(int x[],int length);
 
int main()
{
    int total_number_of_elements;
    
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout); 
    
    scanf("%d",&total_number_of_elements);

    int input[total_number_of_elements];
    buckets.resize(10);
    int number;
    for(int i=0;i<total_number_of_elements;i++)
    {
        scanf("%d",&number);
        input[i]=number;
    }
    radixSort(input,total_number_of_elements);
    return 0;
}

void printSorted(int x[], int length)
{
    for(int i=0;i<length;i++)
        cout<<x[i]<<" ";
}

void radixSort(int x[],int length)
{
    int temp;
    int m=0;
 
    int max=x[0];
    
    for(int i=0; i< length; i++)
            if(max < x[i])
                  max = x[i];
 
    for(int i=0; max!=0; max=max/10,i++)
    {
        for(int j=0;j<length;j++)
        {
                temp=(int)((x[j])/pow(10,i))%10;
                buckets[temp].push_back((x[j]));
        }
        
        for(int k=0;k<10;k++)
        {
                for(int l=0;l<buckets[k].size();l++)
                {
 
                        x[m]=buckets[k][l];
                        m++;
                }
                
                buckets[k].clear();
        }
        m=0;
    }
    buckets.clear();
    printSorted(x,length);
    
}