Ecrire la fonction TRI_BULLE qui trie un tableau de N éléments entiers par ordre croissant en appliquant la méthode de la bulle (tri par propagation - voir exercice 7.15). Employer la fonction RANGER de l'exercice ci-dessus.
Ecrire un programme pour tester la fonction TRI_BULLE.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#include <stdio.h> main() { /* Prototypes des fonctions appelées */ void LIRE_TAB (int *TAB, int *N, int NMAX); void TRI_BULLE(int *T, int N); void ECRIRE_TAB (int *TAB, int N); /* Variables locales */ int T[100]; /* Tableau d'entiers */ int DIM; /* Dimension du tableau */ /* Traitements */ LIRE_TAB (T, &DIM, 100); printf("Tableau donné : \n"); ECRIRE_TAB (T, DIM); TRI_BULLE(T, DIM); printf("Tableau trié : \n"); ECRIRE_TAB (T, DIM); return 0; } void TRI_BULLE(int *T, int N) { /* Prototypes des fonctions appelées */ int RANGER(int *X, int *Y); /* Variables locales */ int I,J; /* indices courants */ int FIN; /* position où la dernière permutation a eu lieu */ /* permet de ne pas trier un sous-ensemble déjà trié. */ /* Tri de T par propagation de l'élément maximal */ for (I=N-1 ; I>0 ; I=FIN) { FIN=0; for (J=0; J<I; J++) if (RANGER(T+J, T+J+1)) FIN = J; } } int RANGER(int *X, int *Y) { . . . } void LIRE_TAB (int *TAB, int *N, int NMAX) { . . . } void ECRIRE_TAB (int *TAB, int N) { . . . } |