Sdílet prostřednictvím


qsort

Provede rychlé řazení.Bezpečnější verze této funkce je k dispozici. see qsort_s.

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

Parametry

  • base
    Začátek cílové pole.

  • num
    Velikost pole prvků.

  • width
    Prvek velikost v bajtech.

  • compare
    Ukazatel na uživatelem zadaný rutina, která porovnává dva prvky matice a vrátí hodnotu, která určuje jejich vztah.

Poznámky

qsort Funkce implementuje algoritmus řazení rychle seřadit pole num prvky, každý z width bajtů.Argument base je ukazatel na základě pole, které mají být seřazeny.qsortToto pole přepíše pomocí řazení prvků.

qsortvolání compare rutinní jeden nebo více krát během řazení a předá dva prvky pole ukazatelů při každém volání.

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

Rutinní porovnává prvky a vrátí jednu z následujících hodnot.

Porovnejte vrácené hodnoty funkce

Description

< 0

elem1 menší než elem2

0

elem1odpovídáelem2

> 0

elem1 větší než elem2

Pole je seřazeno vzestupně, definované funkce porovnání.Chcete-li seřadit pole v sestupném pořadí, zpětně smyslu "větší než" a "menší než" ve funkci porovnání.

Tato funkce ověřuje své parametry.Pokud compare nebo num je NULL, nebo -li base je NULL a *num je nenulová, nebo -li width je menší než nula, je vyvolána obslužná rutina neplatný parametr, jak je popsáno v Ověření parametru.Pokud je povoleno zpracování pokračovat, vrátí funkce a errno je nastavena na EINVAL.

Požadavky

Rutina

Požadované záhlaví

qsort

<stdlib.h> a <search.h>

Další informace o kompatibilitě naleznete v tématu Kompatibilita.

Příklad

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

Ekvivalent v rozhraní .NET Framework

System::Collections::ArrayList::sort

Viz také

Referenční dokumentace

Vyhledávání a třídění

bsearch

_lsearch