Pagini recente » Cod sursa (job #1248511) | Cod sursa (job #453682) | Cod sursa (job #1823188) | Cod sursa (job #1992148) | Cod sursa (job #1019475)
#include "stdio.h"
#include "stdlib.h"
#define max_nr_elements 1000
void Afiseaza(int *v,int n){
int i;
for(i=0;i<n;i++)
printf("%d ",v[i]);
printf("\n");
}
void Citeste(int *v,int *n){
int i;
for(i=0;i<*n;i++)
{
//printf("V[%d]=",i);
scanf("%d",&v[i]);
}
}
void RadixSort(int *v,int n){
int i;
int b[max_nr_elements];
int m=0,exp=1;
for(i=0;i<n;i++){
if(v[i]>m)
m=v[i];
}
while(m/exp > 0){
int bucket[10]={0};
for(i=0;i<n;i++)
bucket[v[i]/exp%10]++;
for(i=1;i<10;i++)
bucket[i]+=bucket[i-1];
for(i=n-1;i>=0;i--)
b[--bucket[v[i]/exp % 10]] = v[i];
for(i=0;i<n;i++)
v[i]=b[i];
exp*=10;
// printf("Pas: ");Afiseaza(v,n);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int v[max_nr_elements],n;
int i;
//printf("Dati n: ");
scanf("%d",&n);
Citeste(v,&n);
RadixSort(&v[0],n);
Afiseaza(v,n);
return 0;
}