void tri_a_bulle( int *t, int n){ int j =0; int tmp =0; int en_desordre =1; while (en_desordre){en_desordre = FALSE; for (j =0; j < n-1; j++){ if (t[j] > t[j+1]){tmp = t[j+1];t[j+1] = t[j];t[j] = tmp;en_desordre = TRUE;}}}}Le tri par séléctionLe tri par sélection (ou tri parextraction) est undesalgorithmes de triles plustriviaux. Il consiste en larecherche soit du plus grandélément (ou le plus petit) quel'on va replacer à sa positionfinale c'est-à-dire endernière position (ou enpremière), puis on recherchele second plus grand élément // tri par sélection void tri_selection( int *t, int n){ int i, min, j , tmp; for (i =0; i < n -1; i++){min = i; for (j = i+1; j < n ; j++) if (t[j] < t[min])min = j; if (min != i){ tmp = t[i];t[i] = t[min];t[min] = tmp;}}} Le tri par permutation Le tri par permutation est letri du jeu de cartes, ilconsiste à parcourir le tableau jusqu'à ce que l'on trouve unélément plus petit que leprécedent donc mal placé.On prend cet élément et on lerange à sa place dans letableau puis on continue lalecture.On s'arrête à la fin dutableau. // tri par permutation void tri_permutation( int *t, int n){ int i,s=0,k; int nb[n]; int res [n]; for (i=0;i<n;i++){ for (k=0;k<n;k++){ if (t[i]>t[k]) s++;nb[i]=s;}res[s]=t[i];s=0;} for ( i=0;i<n;i++)t[i]=res[i];} Tri par insertion Le tri par insertion consiste àparcourir la liste : on prendles éléments dans l'ordre.Ensuite, on les compare avecles éléments précédents jusqu'à trouver la place del'élément qu'on considère. Ilne reste plus qu'à décaler leséléments du tableau pourinsérer l'élément considéré àsa place dans la partie déjàtriée. // tri par insertion void tri_insertion( int *t, int n){ int i,p,j; int x; for (i =1; i < n; i++){x = t[i];p = i-1; while (t[p] > x && p-- >0) {}p++; for (j = i-1; j >= p; j--) {t[j+1] = t[j];}t[p] = x;}} Tri par fusion Le tri fusion est construit // tri par fusion void fusion( int *t, int deb1, int fin1, int fin2) Le programme de la recherche dichotomique est le suivant : DEBUTTableau Entier T(N) Entier inf , sup , milieu , x Booléen TrouveTrouve Faux inf = 1sup N TANT QUE (
inf sup ET Trouve = Faux) milieu (inf + sup) Div 2 // Div est la division entière SI ( T[milieu] = x) ALORS Trouve Vrai SINONSI T[milieu] < x alors inf inf + 1 SINON sup milieu 1 FIN SIFIN SIFIN TANT QUESI ( Trouve = Vrai ) ALORSEcrire « Lélément » , x , « existe dans T » SINONEcrire « Lélément » , x , « nexiste pas dans T » FIN SIFIN
2 .
L ES ALG ORITHMES DE TRI Trier les éléments d¶un tableau revient à ordonner tous ces éléments selon un ordrecroissant ou décroissant.Soit T un tableau de N éléments muni d¶une relation d¶ordre =. Trier ce tableau c¶estconstruire un algorithme qui devra satisfaire à la spécification suivante :