Tento pokyn ilustruje třídění polí pomocí qsort() funkce v C a také vám pomůže porozumět pomocí příkladových kódů C.
qsort() v C
C standardní knihovna nám usnadňuje qsort() funkce, která se jednoduše používá k řazení polí. Jedná se o extrémně optimalizovanou a rychlou funkci, která může pracovat s libovolným polem datových typů.
Header-File pomocí qsort() v C
The qsort() metoda je definována uvnitř stdlib.h hlavičkový soubor, který musí být definován před implementací qsort() v programu C.
#include
Deklarace qsort()
Prohlášení o qsort() funkce je následující:
prázdnota qsort ( prázdnota * základna , počet_prvků , velikost_prvku , porovnávací_funkce )
Parametry funkce qsort().
Parametry qsort() funkce jsou:
základna: Ukazatel na první prvek pole, které má být seřazeno.
počet_prvků: Počet prvků v poli, které mají být seřazeny.
velikost_prvku: Velikost každého prvku v poli v bajtech.
porovnávací_funkce: Ukazatel na porovnávací funkci, která definuje pořadí prvků.
Co je porovnávací funkce v qsort()
Porovnávací funkce přebírá dva parametry, oba typu const void*, které ukazují na porovnávané prvky. Funkce by měla vrátit celé číslo menší než, rovné nebo větší než 0 v závislosti na tom, zda má být první prvek seřazen před, na stejné pozici nebo za druhým prvkem.
Jak qsort funguje v C
The qsort() funkce funguje následujícím způsobem:
Poznámka: Zde uvažujeme o int arr[] = {5, 2, 8, 3, 1, 9};
1: Zpočátku bude funkce qsort volána s následujícími parametry:
qsort ( arr , 6 , velikost ( int ) , porovnávací_funkce ) ;kde arr je ukazatel na pole, 6 je počet prvků v poli, sizeof(int) je velikost každého prvku v poli a funkce Compare_function je funkce, která určuje pořadí, ve kterém jsou prvky seřazeny.
2: Funkce qsort vybere prvek pivotu. Řekněme, že vybírá 3 jako pivot.
3: Funkce qsort rozděluje pole na dvě podpole: {2, 1} a {5, 8, 9}. První dílčí pole obsahuje prvky, které jsou menší nebo rovné pivotu, a druhé podpole obsahuje prvky, které jsou větší než pivot.
4: Funkce qsort rekurzivně volá sama sebe na každém z dílčích polí.
5: Funkce qsort vybírá pivoty pro každé z dílčích polí. Řekněme, že jako pivoty vybere 1 a 8.
6: Funkce qsort rozděluje každé podpole na dvě další podpole a rekurzivně se volá na každé z těchto podpolí.
7: Funkce qsort kombinuje seřazená podpole zpět do jediného seřazeného pole: {1, 2} a {5, 8, 9} se stanou {1, 2, 5, 8, 9}.
8: Vrátí se celé seřazené pole.
Implementace qsort v programování C
Následující kód ukazuje implementaci qsort funkce v programování C.
#include#include
int porovnat ( konst prázdnota * a1 , konst prázdnota * b1 )
{
vrátit se ( * ( int * ) a1 - * ( int * ) b1 ) ;
}
int hlavní ( )
{
int i = 0 , na jednom = 6 ;
int pole [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;
qsort ( pole , na jednom , velikost ( int ) , porovnat ) ;
printf ( 'Seřazené prvky pole pomocí qsort() jsou: ' ) ;
pro ( i = 0 ; i < na jednom ; i ++ ) {
printf ( '%d' , pole [ i ] ) ; }
vrátit se 0 ;
}
Ve výše uvedeném kódu je nejprve vytvořena porovnávací funkce se dvěma parametry a1 a b1 . Poté provádění začíná od main(). V podstatě inicializujeme dvě celočíselné proměnné jako i=0 a num=6. Potom deklarujeme pole se šesti prvky jako {5, 2, 8, 3, 1, 9} . Po tomto qsort() mají tři parametry typu pole, parametr num říká celkový počet prvků pole, sizeof(int) odkazuje na celkovou velikost pole a porovnat se používá k porovnání prvků pole jeden po druhém. Poté vytiskněte seřazené pole pomocí printf() funkce v C.
Výstup
Závěr
qsort je výkonná funkce v programování C pro třídění polí libovolného typu. Používá algoritmus rychlého třídění k řazení prvků ve vzestupném nebo sestupném pořadí na základě porovnávací funkce. Výše uvedená příručka vám ukazuje snadný způsob, jak implementovat qsort v programování C s postupnou prací qsort algoritmus.