Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Provede rychlé řazení. K dispozici je bezpečnější verze této funkce; viz .qsort_s
Syntaxe
void qsort(
void *base,
size_t number,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
Parametry
base
Začátek cílového pole
number
Velikost pole v prvech
width
Velikost prvku v bajtech
compare
Ukazatel na rutinu zadanou uživatelem, která porovnává dva prvky pole a vrací hodnotu, která určuje jejich relaci.
Poznámky
Funkce qsort implementuje algoritmus rychlého řazení pro řazení pole number prvků, z nichž každý z width bajtů. base Argument je ukazatel na základ pole, který se má seřadit. qsort přepíše toto pole pomocí seřazených prvků.
qsort volá rutinu compare jednou nebo vícekrát během řazení a předává ukazatele na dva prvky pole při každém volání. Pokud compare jsou dva prvky stejné, jejich pořadí ve výsledné seřazené matici není zadáno.
compare(const void *elem1, const void *elem2);
Rutina porovnává prvky a vrací jednu z následujících hodnot.
| Porovnání návratové hodnoty funkce | Popis |
|---|---|
| < 0 | elem1 méně než elem2 |
| 0 | elem1 ekvivalentem elem2 |
| > 0 | elem1 větší než elem2 |
Pole se seřadí vzestupně, jak je definováno funkcí porovnání. Chcete-li řadit pole v sestupném pořadí, převrácení smysl "větší než" a "menší než" ve funkci porovnání.
Tato funkce ověří své parametry. Pokud compare je nebo number je nebo base je NULLNULL nenulovánumber, nebo je-li width menší než nula, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, vrátí funkce a errno je nastavena na EINVAL.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
| Rutina | Požadovaný hlavičkový soubor |
|---|---|
qsort |
<stdlib.h> a <search.h> |
Další informace o kompatibilitě najdete 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 );
}
boy deserves every favor good