cpp/algorithm/qsort : Différence entre versions
De cppreference.com
P12 (discuter | contributions) m (1 version : Import from Dokuwiki) |
m (Remplacement du texte — « <code terminal> » par « <syntaxhighlight lang="text"> ») |
||
Ligne 46 : | Ligne 46 : | ||
À l'exécution ce code, voici ce qu'on observer sur la sortie standard : | À l'exécution ce code, voici ce qu'on observer sur la sortie standard : | ||
− | < | + | <> |
Avant le tri : -2 99 0 -743 2 3 4 | Avant le tri : -2 99 0 -743 2 3 4 | ||
Après le tri : -743 -2 0 2 3 4 99 | Après le tri : -743 -2 0 2 3 4 99 |
Version du 2 mai 2012 à 13:23
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