cpp/algorithm/qsort : Différence entre versions
De cppreference.com
m (Remplacement du texte — « <code terminal> » par « <syntaxhighlight lang="text"> ») |
m (r2.7.3) (robot Ajoute : en, ja, pl, zh) |
||
Ligne 52 : | Ligne 52 : | ||
Sujets connexes : [[cpp/algorithm/bsearch | bsearch]], [[cpp/algorithm/sort | stl/algorithm/sort]] | Sujets connexes : [[cpp/algorithm/bsearch | bsearch]], [[cpp/algorithm/sort | stl/algorithm/sort]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ |
Version du 4 mai 2012 à 11:50
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
Sujets connexes : bsearch, stl/algorithm/sort