Compartilhar via


qsort

Executa um tipo rápido. Uma versão mais segura dessa função está disponível; consulte qsort_s.

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

Parâmetros

  • base
    Início da matriz de destino.

  • num
    Tamanho da matriz em elementos.

  • width
    Tamanho do elemento em bytes.

  • compare
    Ponteiro para uma rotina fornecida pelo usuário que compara dois elementos da matriz e retorna um valor que especifica a relação.

Comentários

A função de qsort implementa de um algoritmo de classificação para classificar uma matriz de elementos de num , cada um de bytes de width . O argumento base é um ponteiro para a base da matriz a ser classificada. substituiqsort esta matriz usando os elementos classificados.

qsort chama a rotina de compare uma ou mais vezes durante o tipo, e passa ponteiros a dois elementos da matriz em cada chamada.

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

A rotina compara os elementos e retorna um dos valores a seguir.

Comparar o valor de retorno da função

Descrição

< 0

elem1 menor que elem2

0

equivalente a elem2deelem1

> 0

elem1 maior que elem2

A matriz é classificada em ordem crescente, como definido pela função de comparação. Para classificar em ordem decrescente uma matriz, inverta sentido de “maior que” e “menor que” na função de comparação.

Essa função valida seus parâmetros. Se compare ou num são NULL, ou se base é NULL e *num for diferente de zero, ou se width é menor que zero, o manipulador inválido do parâmetro é chamado, conforme descrito em Validação do parâmetro. Se a execução for permitida continuar, a função retorna e errno é definido como EINVAL.

Requisitos

Rotina

Cabeçalho necessário

qsort

<stdlib.h e> search.h <>

Para obter informações adicionais sobre compatibilidade, consulte Compatibilidade.

Exemplo

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

Equivalência do .NET Framework

System::Collections::ArrayList::Sort

Consulte também

Referência

Pesquisando e classificando

bsearch

_lsearch