Condividi tramite


qsort

esegue un ordinamento rapido.Una versione più sicura di questa funzione è disponibile; vedere qsort_s.

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

Parametri

  • base
    Inizio della matrice di destinazione.

  • num
    Dimensione della matrice negli elementi.

  • width
    Dimensione elemento in byte.

  • compare
    Puntatore a una routine fornita dall'utente che confronta due elementi di matrice e restituisce un valore che specifica la relazione.

Note

qsort la funzione implementa un algoritmo di rapido-ordinamento per ordinare una matrice di num elementi, ognuno di width byte.l'argomento base è un puntatore alla base della matrice da ordinare.qsort sovrascrive questa matrice utilizzando gli elementi ordinati.

qsort chiama compare routine uno o più volte durante l'ordinamento e puntatori di sessioni a due elementi della matrice a ogni chiamata.

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

La routine confronta gli elementi e restituisce uno dei seguenti valori.

Confrontare il valore restituito di una funzione

Descrizione

< 0

elem1 minore elem2

0

elem1 equivalente a elem2

> 0

elem1 maggiore di elem2

La matrice viene ordinata in ordine crescente, come definito dalla funzione di confronto.Per eseguire un ordinamento decrescente una matrice, invertire il senso “in grado di„ e “di minore di„ nella funzione di confronto.

Questa funzione convalida dei parametri.se compare o num viene NULL, o se base viene NULL e *num è diverso da zero, o se width è minore di zero, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, la funzione restituisce e errno è impostato su EINVAL.

Requisiti

routine

Intestazione di associazione

qsort

<definito> e <search.h>

per informazioni di compatibilità aggiuntive, vedere Compatibilità.

Esempio

// 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 );
}
  

Equivalente .NET Framework

System:: Raccolte:: Oggetto ArrayList:: ordinamento

Vedere anche

Riferimenti

Ricerca e ordinamento

bsearch

_lsearch