qsort

 

Date de publication : août 2016

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Effectue un tri rapide. Une version plus sécurisée de cette fonction est disponible ; consultez la page qsort_s.

void qsort(  
   void *base,  
   size_t num,  
   size_t width,  
   int (__cdecl *compare )(const void *, const void *)   
);  

Paramètres

base
Début du tableau cible.

num
Taille du tableau dans les éléments.

width
Taille en octets de l’élément.

compare
Pointeur vers une routine fournie par l’utilisateur qui compare deux éléments du tableau et retourne une valeur qui indique leur relation.

Le qsort fonction implémente un algorithme de tri rapide pour trier un tableau de num éléments, chacun des width octets. L’argument base est un pointeur vers la base du tableau doit être trié. qsortremplace ce tableau à l’aide des éléments triés.

qsortappelle le compare une routine ou plusieurs fois pendant le tri et transmet des pointeurs aux deux éléments du tableau sur chaque appel.

compare( (void *) & elem1, (void *) & elem2 );  

La routine compare les éléments et retourne une des valeurs suivantes.

Comparer la valeur de retour de fonctionDescription
< 0elem1 inférieure à elem2
0elem1équivalent àelem2
> 0elem1 supérieur à elem2

Le tableau est trié en ordre croissant, comme défini par la fonction de comparaison. Pour trier un tableau dans l’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 de paramètre. Si l’exécution est autorisée à se poursuivre, la fonction retourne et errno est défini sur EINVAL.

RoutineEn-tête requis
qsort<stdlib.h> et <search.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.

// 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  

System::Collections::ArrayList::sort

Recherche et tri
bsearch
_lsearch

Afficher: