Kako razvrstiti nize s funkcijo qsort() v C

Kako Razvrstiti Nize S Funkcijo Qsort V C



Razvrščanje je temeljna operacija v računalniškem programiranju in vključuje urejanje zbirke podatkov v določenem vrstnem redu. Eden od načinov za razvrščanje niza elementov v C je uporaba qsort() funkcijo, ki je del standardne knjižnice. Ta funkcija vzame matriko, njeno velikost in primerjalno funkcijo kot argumente in privzeto razvrsti matriko v naraščajočem vrstnem redu.

Ta smernica ponazarja razvrščanje matrik z uporabo qsort() funkcijo v C in vam jo tudi pomaga razumeti s primeri kod C.

qsort() v C

Standardna knjižnica C nam olajša qsort() funkcijo, ki se preprosto uporablja za razvrščanje nizov. Je izjemno optimizirana in hitra funkcija, ki lahko deluje s katerim koli nizom podatkovnih vrst.







Header-File z uporabo qsort() v C

The qsort() metoda je definirana znotraj stdlib.h datoteko glave, ki jo je treba definirati pred implementacijo qsort() v programu C.



#include

Deklaracija qsort()

Izjava o qsort() funkcija je naslednja:



praznina qsort ( praznina * osnova , število_elementov , velikost_elementa , primerjalna_funkcija )

Parametri funkcije qsort().

Parametri za qsort() funkcije so:





osnova: Kazalec na prvi element matrike, ki ga želite razvrstiti.

število_elementov: Število elementov v matriki, ki jih je treba razvrstiti.



velikost_elementa: Velikost v bajtih vsakega elementa v matriki.

primerjalna_funkcija: Kazalec na primerjalno funkcijo, ki definira vrstni red elementov.

Kaj je primerjalna funkcija v qsort()

Primerjalna funkcija sprejme dva parametra, oba tipa const void*, ki kažeta na primerjane elemente. Funkcija mora vrniti celo število, ki je manjše, enako ali večje od 0, odvisno od tega, ali naj bo prvi element razvrščen pred, na istem mestu ali za drugim elementom.

Kako qsort deluje v C

The qsort() funkcija deluje na naslednji način:

Opomba: Tukaj razmišljamo o int arr[] = {5, 2, 8, 3, 1, 9};

1: Na začetku bo funkcija qsort poklicana z naslednjimi parametri:

qsort ( prir , 6 , sizeof ( int ) , primerjalna_funkcija ) ;

kjer je arr kazalec na matriko, 6 je število elementov v matriki, sizeof(int) je velikost vsakega elementa v matriki, compare_function pa je funkcija, ki določa vrstni red, v katerem so elementi razvrščeni.

2: Funkcija qsort izbere vrtilni element. Recimo, da izbira 3 kot pivot.

3: Funkcija qsort razdeli matriko na dve podmatriki: {2, 1} in {5, 8, 9}. Prva podmatrika vsebuje elemente, ki so manjši ali enaki vrtišču, druga podmatrika pa vsebuje elemente, ki so večji od vrtišča.

4: Funkcija qsort se rekurzivno pokliče za vsako od podnizov.

5: Funkcija qsort izbere vrtišča za vsako od podnizov. Recimo, da kot vrtišča izbere 1 in 8.

6: Funkcija qsort vsako podmatrico razdeli na dve dodatni podmatriki in se rekurzivno pokliče za vsako od teh podmatric.

7: Funkcija qsort združi razvrščene podnize nazaj v eno samo razvrščeno matriko: {1, 2} in {5, 8, 9} postanejo {1, 2, 5, 8, 9}.

8: Vrnjena je celotna razvrščena matrika.

Implementacija qsort v programiranju C

Naslednja koda prikazuje izvedbo qsort funkcijo v programiranju C.

#include

#include

int primerjati ( konst praznina * a1 , konst praznina * b1 )

{

vrnitev ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int glavni ( )

{

int jaz = 0 , na enem = 6 ;

int niz [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;

qsort ( niz , na enem , sizeof ( int ) , primerjati ) ;

printf ( 'Razvrščeni elementi matrike z uporabo qsort() so: ' ) ;

za ( jaz = 0 ; jaz < na enem ; jaz ++ ) {

printf ( '%d' , niz [ jaz ] ) ; }

vrnitev 0 ;

}

V zgornji kodi je najprej narejena primerjalna funkcija z dvema parametroma a1 in b1 . Nato se izvajanje začne z main(). V glavnem inicializiramo dve celoštevilski spremenljivki kot i=0 in num=6. Nato razglasimo matriko s šestimi elementi kot {5, 2, 8, 3, 1, 9} . Po tem qsort() imajo tri parametre tipa matrike, parameter num pove skupno število elementov matrike, sizeof(int) se nanaša na skupno velikost matrike, primerjava pa se uporablja za primerjavo elementov matrike enega za drugim. Nato natisnite razvrščeni niz z uporabo printf() funkcija v C.

Izhod

Zaključek

qsort je zmogljiva funkcija v programiranju C za razvrščanje nizov katere koli vrste. Uporablja algoritem hitrega razvrščanja za razvrščanje elementov v naraščajočem ali padajočem vrstnem redu na podlagi primerjalne funkcije. Zgornji vodnik vam pokaže preprost način implementacije qsort v programiranje C z uporabo korak za korakom qsort algoritem.