Kako sortirati nizove pomoću qsort() u C-u

Kako Sortirati Nizove Pomocu Qsort U C U



Sortiranje je temeljna operacija u računalnom programiranju i uključuje sređivanje zbirke podataka određenim redoslijedom. Jedan od načina sortiranja niza elemenata u C-u je korištenje qsort() funkcija, koja je dio standardne biblioteke. Ova funkcija uzima niz, njegovu veličinu i funkciju usporedbe kao argumente i prema zadanim postavkama sortira niz uzlaznim redoslijedom.

Ova smjernica ilustrira razvrstavanje nizova pomoću qsort() funkciju u C-u i također vam pomaže da je razumijete pomoću C primjera kodova.

qsort() u C-u

C standardna biblioteka olakšava nam s qsort() funkcija koja se jednostavno koristi za sortiranje nizova. To je iznimno optimizirana i brza funkcija koja može raditi s bilo kojim nizom vrsta podataka.







Datoteka zaglavlja pomoću qsort() u C-u

The qsort() metoda je definirana unutar stdlib.h datoteku zaglavlja, koja se mora definirati prije implementacije qsort() u C programu.



#include

Deklaracija qsort()

Deklaracija od qsort() funkcija je sljedeća:



poništiti qsort ( poništiti * baza , broj_elemenata , veličina_elementa , funkcija_usporedbe )

Parametri funkcije qsort().

Parametri od qsort() funkcija su:





baza: Pokazivač na prvi element niza koji treba sortirati.

broj_elemenata: Broj elemenata u nizu koje treba sortirati.



veličina_elementa: Veličina u bajtovima svakog elementa u nizu.

funkcija_usporedbe: Pokazivač na funkciju usporedbe koja definira redoslijed elemenata.

Što je funkcija usporedbe u qsort()

Funkcija usporedbe uzima dva parametra, oba tipa const void*, koji ukazuju na elemente koji se uspoređuju. Funkcija bi trebala vratiti cijeli broj manji od, jednak ili veći od 0, ovisno o tome treba li prvi element biti sortiran prije, na istoj poziciji ili nakon drugog elementa.

Kako qsort radi u C

The qsort() funkcija radi na sljedeći način:

Bilješka: Ovdje razmatramo int arr[] = {5, 2, 8, 3, 1, 9};

1: U početku će se funkcija qsort pozvati sa sljedećim parametrima:

qsort ( arr , 6 , veličina ( int ) , funkcija_usporedbe ) ;

gdje je arr pokazivač na niz, 6 je broj elemenata u nizu, sizeof(int) je veličina svakog elementa u nizu, a compare_function je funkcija koja određuje redoslijed kojim su elementi poredani.

2: Funkcija qsort odabire stožerni element. Recimo da bira 3 kao stožer.

3: Funkcija qsort dijeli niz u dva podniza: {2, 1} i {5, 8, 9}. Prvi podniz sadrži elemente koji su manji ili jednaki zakretanju, a drugi podniz sadrži elemente koji su veći od zakretanja.

4: Funkcija qsort rekurzivno poziva samu sebe na svakom od podnizova.

5: Funkcija qsort odabire stožere za svaki od podnizova. Recimo da odabire 1 i 8 kao stožere.

6: Funkcija qsort dijeli svaki podniz na još dva podniza i rekurzivno poziva samu sebe na svakom od tih podnizova.

7: Funkcija qsort kombinira sortirane podnizove natrag u jedan sortirani niz: {1, 2} i {5, 8, 9} postaju {1, 2, 5, 8, 9}.

8: Vraća se cijeli sortirani niz.

Implementacija qsort-a u C programiranju

Sljedeći kod prikazuje implementaciju qsort funkcija u C programiranju.

#include

#include

int usporediti ( konst poništiti * a1 , konst poništiti * b1 )

{

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

}

int glavni ( )

{

int ja = 0 , na jedan = 6 ;

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

qsort ( niz , na jedan , veličina ( int ) , usporediti ) ;

printf ( 'Sortirani elementi niza pomoću qsort() su: ' ) ;

za ( ja = 0 ; ja < na jedan ; ja ++ ) {

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

povratak 0 ;

}

U gornjem kodu prvo se radi funkcija usporedbe s dva parametra a1 i b1 . Tada izvođenje počinje od main(). U glavnom, inicijaliziramo dvije cjelobrojne varijable kao i=0 i num=6. Zatim deklariramo niz sa šest elemenata kao {5, 2, 8, 3, 1, 9} . Nakon ovoga qsort() imaju tri parametra tipa niza, parametar num govori o ukupnom broju elemenata niza, veličina(int) odnosi se na ukupnu veličinu niza, a compare se koristi za usporedbu elemenata niza jedan po jedan. Zatim ispišite sortirani niz pomoću printf() funkcija u C.

Izlaz

Zaključak

qsort je moćna funkcija u C programiranju za sortiranje nizova bilo koje vrste. Koristi algoritam brzog sortiranja za sortiranje elemenata uzlaznim ili silaznim redoslijedom na temelju funkcije usporedbe. Gornji vodič pokazuje vam jednostavan način implementacije qsort-a u C programiranje uz rad korak po korak qsort algoritam.