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

Voir aussi

Référence

Rechercher et trier

bsearch

_lsearch