Jak třídit pole pomocí qsort() v C

Jak Tridit Pole Pomoci Qsort V C



Třídění je základní operace v počítačovém programování a zahrnuje uspořádání kolekce dat v určitém pořadí. Jedním ze způsobů, jak třídit pole prvků v C, je použít qsort() funkce, která je součástí standardní knihovny. Tato funkce bere pole, jeho velikost a porovnávací funkci jako argumenty a ve výchozím nastavení třídí pole vzestupně.

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.