qsort
Executa uma classificar rápida.Uma versão mais segura desta 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 *)
);
base
Início da matriz de destino.num
dimensionar de matriz em elementos.width
Elemento dimensionar em bytes.compare
Função de comparação.O primeiro parâmetro é um ponteiro para a chave para a Pesquisar e o segundo parâmetro é um ponteiro para o elemento de matriz a ser comparada com a tecla.
The qsort função implementa um algoritmo de classificação rápida para classificar uma matriz de num elementos, cada um dos width bytes. O argumento base é um ponteiro para a base da matriz a ser classificado. qsort substitui essa matriz com elementos classificados. O argumento compare é um ponteiro para uma rotina fornecido pelo usuário que compara dois elementos de matriz e retorna um valor especificando suas relações. qsort chamadas a compare rotina uma ou mais vezes durante a classificar, passar ponteiros para dois elementos de matriz em cada telefonar:
compare( (void *) & elem1, (void *) & elem2 );
A rotina deve comparar os elementos e, em seguida, retornar um dos seguintes valores:
Comparar o valor retornado de função |
Descrição |
---|---|
< 0 |
elem1 menor que elem2 |
0 |
elem1 equivalente a elem2 |
> 0 |
elem1 maior que elem2 |
A matriz é classificada em ordem incresistema autônomoing, sistema autônomo definidos pela função de comparação.Para classificar uma matriz em ordem decrescente, inverta a noção de "maior que" e "menor que" na função de comparação.
Esta função valida os parâmetros.If compare ou num é NULL, ou se base é NULL e *num é diferente de zero, ou se width é menor que zero, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro. Se a execução terá permissão para continuar, a função retorna e errno é conjunto para EINVAL.
Rotina |
Cabeçalho necessário |
---|---|
qsort |
<stdlib.h> e <Pesquisar.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
// 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