Pagini recente » Cod sursa (job #4222) | Cod sursa (job #1885668) | Cod sursa (job #1084433) | Cod sursa (job #2050053) | Cod sursa (job #643175)
Cod sursa(job #643175)
#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);
}