Syntaxe :
#include <cstdlib> void qsort( void *buf, size_t nb, size_t taille, int (*compare)(const void*, const void *) );
La fonction qsort() trie le tableau buf
(qui contient nb
éléments, chacun de
taille taille
) en utilisant l'algorithme Quicksort.
La fonction compare
est utilisée pour comparer les élément de buf
et doit retourner une
valeur négative si le premier argument est inférieur au second, zéro si les deux éléments sont égaux
et une valeur positive si le premier est supérieur au second. qsort()
trie le buf
dans l'ordre
croissant.
Par exemple, le bout de code ci-dessous utilise qsort()
pour trier un tableau d'entiers :
int compare_ints( const void* a, const void* b ) { // fonction de comparaison int* arg1 = (int*) a; int* arg2 = (int*) b; if( *arg1 < *arg2 ) return -1; else if( *arg1 == *arg2 ) return 0; else return 1; } int tab[] = { -2, 99, 0, -743, 2, 3, 4 }; int taille_tab= 7; ... printf( "Avant le tri : " ); for( int i = 0; i < taille_tab; i++ ) { printf( "%d ", tab[i] ); } printf( "\n" ); qsort( tab, taille_tab, sizeof(int), compare_ints ); printf( "Après le tri : " ); for( int i = 0; i < taille_tab; i++ ) { printf( "%d ", tab[i] ); } printf( "\n" );
À l'exécution ce code, voici ce qu'on observer sur la sortie standard :
Avant le tri : -2 99 0 -743 2 3 4 Après le tri : -743 -2 0 2 3 4 99