Tri rapide en C
Tri rapide est un algorithme qui repose sur le principe Diviser pour Régner. Les étapes sont les suivantes:
- Choisissez un élément du tableau, cet élément est appelé l’élément pivot.
- Divisez le tableau non trié d’éléments en deux tableaux dont la valeur est inférieure au pivot et qui figurent dans le premier sous-tableau. Tous les éléments dont la valeur est supérieure au pivot figurent dans le deuxième sous-tableau (des valeurs égales peuvent aller dans les deux sens). Cette étape s’appelle l’opération de partition.
- Répétez de manière récursive l’étape 2 (jusqu’à ce que les sous-tableaux soient triés).
La même logique que nous avons implémentée dans le programme C suivant.
#include <stdio.h>
void permuter(int *a, int *b) {
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void triRapid(int tab[], int first, int last) {
int pivot, i, j;
if(first < last) {
pivot = first;
i = first;
j = last;
while (i < j) {
while(tab[i] <= tab[pivot] && i < last)
i++;
while(tab[j] > tab[pivot])
j--;
if(i < j) {
permuter(&tab[i], &tab[j]);
}
}
permuter(&tab[pivot], &tab[j]);
triRapid(tab, first, j - 1);
triRapid(tab, j + 1, last);
}
}
int main() {
int tab[100], nbr, i;
printf("\n Entrer le nombre total d'éléments : ");
scanf("%d", &nbr);
printf("\n Entrer les éléments du tableau : ");
for(i = 0; i < nbr; i++)
scanf("%d", &tab[i]);
triRapid(tab, 0, nbr - 1);
printf("\n Tableau trié : ");
for(i = 0; i < nbr; i++) {
printf(" %4d", tab[i]);
}
printf("\n");
return 0;
}
La sortie :



j’aime bcp ce site. vraiment efficace m’a aider bcp. mrc encore