Pagini recente » Profil xVlad | Monitorul de evaluare | Statistici Peace my pants (UPB_Darius_Rares_Silviu) | Cod sursa (job #1286427) | Cod sursa (job #1121940)
#include<stdio.h>
#define MAX 100000
#define SHOWPASS
#define BASE 10
FILE *f,*g;
int a[MAX],b[MAX],bucket[MAX];
void print(int n)
{
int i;
for (i = 0; i < n; i++){
fprintf(g,"%d ", a[i]);
}
}
void radixsort(int n)
{
int i, m = a[0], exp = 1;
for (i = 1; i < n; i++)
{
if (a[i] > m)
m = a[i];
}
while (m / exp > 0)
{
int bucket[BASE] ={ 0 };
for (i = 0; i < n; i++)
bucket[(a[i] / exp) % BASE]++;
for (i = 1; i < BASE; i++)
bucket[i] += bucket[i - 1];
for (i = n - 1; i >= 0; i--)
b[--bucket[(a[i] / exp) % BASE]] = a[i];
for (i = 0; i < n; i++)
a[i] = b[i];
exp *= BASE;
}
}
int main()
{
int i, n;
f=fopen("algsort.in","r+");
g=fopen("algsort.out","w+");
fscanf(f,"%d", &n);
n = n < MAX ? n : MAX;
for (i = 0; i < n; i++)
fscanf(f,"%d", &a[i]);
radixsort(n);
print( n);
fclose(f);
fclose(g);
return 0;
}