/* Version Pascal (non vérifiée) */ i := 1 ; repeat Changement := False ; for j:=n downto i+1 do if T[j] < T[j-1] then begin echanger(T[j], T[j-1]) ; Changement := true ; end ; i := i + 1 ; until not (Changement or (i>= n)) ; /* ---------------------------------------------------------------------- */ /* Version en langage C (vérifiée) */ int n = 10 ; int tab[] = {-1, 7, 8, 1, 2, 5, 10, 6, 8, 12, 8} ; /* Attention à la case 0 */ void echanger(int * a, int * b) { int temp = *a; *a = *b ; *b = temp ; } void tribulle(int t[]) { int changement=1, i, j ; for (i=1 ; i<=n && changement ; i++) { changement = 0 ; for (j=n ; j >= i+1 ; j--) { if (t[j] < t[j-1]) { echanger(&t[j], &t[j-1]) ; changement = 1 ; } } } } int main() /* Programme de vérification */ { int i ; for (i=1 ; i<=n ; i++) printf("%d\t", tab[i]) ; printf("\n") ; tribulle(tab) ; printf("Tableau trié.\n") ; for (i=1 ; i<=n ; i++) printf("%d\t", tab[i]) ; printf("\n") ; }