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