Compartir a través de


qsort

Realiza una ordenación rápida.Una versión más segura de esta función está disponible; vea qsort_s.

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

Parámetros

  • base
    Inicio de la matriz de destino.

  • num
    Tamaño de la matriz de elementos.

  • width
    Tamaño del elemento en bytes.

  • compare
    Puntero a una rutina proporcionada por que compara dos elementos de matriz y devuelve un valor que especifica la relación.

Comentarios

La función de qsort implementa un algoritmo de la rápido-ordenación para ordenar una matriz de elementos de num , cada uno de los bytes de width .El argumento base es un puntero a la base de la matriz que se ordenen.qsort sobrescribe esta matriz mediante los elementos ordenados.

qsort llama a la rutina de compare una o más veces durante la ordenación, y pasa punteros a dos elementos de la matriz en cada llamada.

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

la rutina compara los elementos y devuelve uno de los valores siguientes.

compare el valor devuelto de la función

Descripción

< 0

elem1 menos que elem2

0

equivalente deelem1 a elem2

> 0

elem1 mayor que elem2

La matriz se ordena en sentido petición, como definido por la función de comparación.Para ordenar una matriz en orden descendente, invierta el sentido de “mayor que” y “menor que” en la función de comparación.

esta función valida sus parámetros.Si compare o num es NULL, o si base es NULL y *num es distinto de cero, o si es width menor que cero, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, la función devuelve y errno se establece en EINVAL.

Requisitos

rutina

Encabezado necesario

qsort

<stdlib.h> y <search.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad.

Ejemplo

// 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 en .NET Framework

System:: colecciones:: ArrayList:: Ordenar

Vea también

Referencia

La búsqueda y ordenación

bsearch

_lsearch