Pagini recente » Cod sursa (job #1964806) | Cod sursa (job #2415363) | Cod sursa (job #2245747) | Cod sursa (job #1799634) | Cod sursa (job #1018452)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <algorithm>
#include <vector>
using namespace std;
#define NMax 1025
int main()
{
int unsorted[500001] , bucket[10][500001]={{0}} , sorted[500001] ;
int j , k , m , p , flag = 0, num, N;
FILE *f = fopen("algsort.in", "r");
FILE *g = fopen("algsort.out", "w");
fscanf(f, "%d", &N);
for(k=0 ; k < N ; k++)
{
fscanf(f, "%d", &num);
sorted[k] = unsorted[k] = num;
}
for(p=1; flag != N ; p*=10)
{
flag = 0;
for(k=0;k<N;k++)
{
bucket[(sorted[k]/p)%10][k] = sorted[k];
if ( (sorted[k]/p)%10 == 0 )
{
flag++;
}
}
if (flag == N)
{
for(j=0 ; j < N ; j++)
{
fprintf(g, "%d ", sorted[j]);
}
fclose(f); fclose(g);
return 0;
}
for(j=0,m=0;j<10;j++)
{
for(k=0;k<N;k++)
{
if( bucket[j][k] > 0 )
{
sorted[m] = bucket[j][k];
bucket[j][k] = 0 ;
m++;
}
}
}
}
fclose(f); fclose(g);
return 0 ;
}