qsort
Effectue un tri rapide. Une version plus sécurisée de cette fonction est disponible ; voir qsort_s
.
Syntaxe
void qsort(
void *base,
size_t number,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
Paramètres
base
Début du tableau cible.
number
Taille du tableau dans les éléments.
width
Taille d’élément en octets.
compare
Pointeur désignant une routine fournie par l’utilisateur qui compare deux éléments de tableau et retourne une valeur qui spécifie leur relation.
Notes
La fonction qsort
implémente un algorithme de tri rapide pour trier un tableau d’éléments number
, chacun de width
octets. L’argument base
est un pointeur désignant la base du tableau à trier. qsort
remplace ce tableau en utilisant les éléments triés.
qsort
appelle la routine compare
une ou plusieurs fois pendant le tri, et transmet les pointeurs à deux éléments de tableau à chaque appel. Si compare
deux éléments sont identiques, leur ordre dans le tableau trié résultant n’est pas spécifié.
compare(const void *elem1, const void *elem2);
La routine compare les éléments et retourner l’une des valeurs suivantes.
Valeur de retour de la fonction compare | Description |
---|---|
< 0 | elem1 inférieure à elem2 |
0 | elem1 équivalent à elem2 |
> 0 | elem1 supérieur à elem2 |
Le tableau est trié par ordre croissant, comme défini par la fonction de comparaison. Pour trier un tableau par ordre décroissant, changez le sens de « supérieur à » et « inférieur à » dans la fonction de comparaison.
Cette fonction valide ses paramètres. Si compare
ou number
est NULL
, ou s’il base
est NULL
différent number
de zéro, ou s’il width
est inférieur à zéro, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à continuer, la fonction retourne et errno
est définie sur EINVAL
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Routine | En-tête requis |
---|---|
qsort |
<stdlib.h> et <search.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_qsort.c
// arguments: every good boy deserves favor
/* This program reads the command-line
* parameters and uses qsort to sort them. It
* then displays the sorted arguments.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
int main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;
/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( " %s", argv[i] );
printf( "\n" );
}
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
boy deserves every favor good