qsort
effectue un tri rapide.un plus version sécurisée de cette fonction est disponible ; consultez qsort_s.
void qsort(
void *base,
size_t num,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
Paramètres
base
Début de tableau cible.num
taille du tableau dans les éléments.width
taille d'élément en octets.compare
Pointeur vers une routine fournie par l'utilisateur qui compare deux éléments de tableau et retourne une valeur qui spécifie les relations.
Notes
La fonction d' qsort implémente un algorithme de rapide-tri pour trier un tableau d'éléments d' num , chacun d'octets d' width .L'argument base est un pointeur vers la base du tableau à trier.qsort remplace ce tableau à l'aide de les éléments triés.
qsort appelle la routine d' compare une ou plusieurs fois pendant le tri, et passe des pointeurs vers deux éléments de tableau à chaque appel.
compare( (void *) & elem1, (void *) & elem2 );
La routine compare les éléments et retourne une des valeurs suivantes.
comparez la valeur de retour de fonction |
Description |
---|---|
< 0 |
elem1 moins qu' elem2 |
0 |
elem1 équivalent à elem2 |
> 0 |
elem1 supérieur elem2 |
Le tableau est triée en augmentant la commande, comme défini par la fonction de comparaison.Pour trier une classe par ordre décroissant, inverser le sens de « supérieur à » et « inférieur à » dans la fonction de comparaison.
cette fonction valide ses paramètres.Si compare ou num est NULL, ou si base est NULL et *num est différent de zéro, ou si width est inférieur à zéro, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, la fonction retourne et errno est défini à EINVAL.
Configuration requise
routine |
en-tête requis |
---|---|
qsort |
<stdlib.h> et <search.h> |
Pour des informations de compatibilité supplémentaires, consultez Compatibilité.
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 );
}
Équivalent .NET Framework
System : : collections : : ArrayList : : tri