#include #include #define N 256 /* taille du tableau de données */ #define K 50 /* donnée la plus grande */ int tab[N]; /* déclaration de t */ int r[N]; /* tableau résultat */ void initialiser(void) { int i; for (i = 0 ; i < N ; i++) { tab[i] = random(K+1) ; /* modulo k+1 */ } } void print_array(int t[]) { int i; for (i = 0 ; i < N ; i++) { printf("%d ",t[i]); } printf("\n"); } void trier(void) { int count[K+1]; int i; for (i = 0 ; i <= K; i++) { count[i] = 0; /* initialisation de count */ } for (i = 0 ; i < N ; i++) { count[tab[i]]++; /* effectifs */ } for (i = 1 ; i <= K ; i++) { count[i] = count[i] + count[i-1]; /* effectifs majorés */ } for (i = N-1; i >= 0 ; i--) { r[count[tab[i]]] = tab[i]; /* ranger tab[i] à sa place */ count[tab[i]]--; /* un tab[i] de moins à ranger */ } } void main(void) { initialiser(); printf("Tableau initial :\n"); print_array(tab); printf("\n\n"); trier(); printf("Tableau trié :\n"); print_array(r); getchar(); }