Pagini recente » Cod sursa (job #1109635) | Cod sursa (job #1087059) | Cod sursa (job #2191928) | Cod sursa (job #1395524) | Cod sursa (job #968009)
Cod sursa(job #968009)
#include <iostream>
#include <fstream>
using namespace std;
void radix_sort(int arr[], int n);
int main()
{
int v[500005], n;
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> n;
for ( int i = 0; i < n; i++ )
f >> v[i];
radix_sort(v,n);
for(int i = 0; i < n; i++)
g<<v[i]<<" ";
}
void radix_sort(int arr[], int n)
{
int bucket[10][5],buck[10],b[10];
int i,j,k,l,num,div,large,passes;
div=1;
num=0;
large=arr[0];
for(i=0 ; i<n ; i++)
{
if(arr[i] > large)
{
large = arr[i];
}
while(large > 0)
{
num++;
large = large/10;
}
for(passes=0 ; passes<num ; passes++)
{
for(k=0 ; k<10 ; k++)
{
buck[k] = 0;
}
for(i=0 ; i<n ;i++)
{
l = ((arr[i]/div)%10);
bucket[l][buck[l]++] = arr[i];
}
i=0;
for(k=0 ; k<10 ; k++)
{
for(j=0 ; j<buck[k] ; j++)
{
arr[i++] = bucket[k][j];
}
}
div*=10;
}
}
}