Hvordan sortere matriser med qsort() i C

Hvordan Sortere Matriser Med Qsort I C



Sortering er en grunnleggende operasjon i dataprogrammering, og det innebærer å ordne en samling av data i en bestemt rekkefølge. En måte å sortere en rekke elementer i C er å bruke qsort() funksjon, som er en del av standardbiblioteket. Denne funksjonen tar en matrise, dens størrelse og en sammenligningsfunksjon som argumenter og sorterer matrisen i stigende rekkefølge som standard.

Denne retningslinjen illustrerer sorteringen av arrays ved hjelp av qsort() funksjon i C og hjelper deg også å forstå den ved hjelp av C-eksempelkoder.

qsort() i C

C standard bibliotek forenkler oss med qsort() funksjon som ganske enkelt brukes til å sortere arrays. Det er en ekstremt optimalisert og rask funksjon som kan fungere med alle datatyper.







Header-File som bruker qsort() i C

De qsort() metoden er definert inne i stdlib.h header-fil, som må defineres før implementering qsort() i et C-program.



#include

Erklæring om qsort()

Erklæringen av qsort() funksjonen er som følger:



tomrom qsort ( tomrom * utgangspunkt , antall_elementer , størrelse_på_element , sammenligningsfunksjon )

Parametre for funksjonen qsort()

Parametrene til qsort() funksjon er:





utgangspunkt: Peker til det første elementet i matrisen som skal sorteres.

antall_elementer: Antall elementer i matrisen som skal sorteres.



størrelse_på_element: Størrelse i byte for hvert element i matrisen.

sammenligningsfunksjon: Peker til en sammenligningsfunksjon som definerer rekkefølgen på elementene.

Hva er sammenligningsfunksjon i qsort()

Sammenligningsfunksjonen tar to parametere, begge av typen const void*, som peker på elementene som sammenlignes. Funksjonen skal returnere et heltall mindre enn, lik eller større enn 0, avhengig av om det første elementet skal sorteres henholdsvis før, på samme posisjon eller etter det andre elementet.

Hvordan qsort fungerer i C

De qsort() funksjonen fungerer på følgende måte:

Merk: Her vurderer vi en int arr[] = {5, 2, 8, 3, 1, 9};

1: Til å begynne med vil qsort-funksjonen bli kalt med følgende parametere:

qsort ( arr , 6 , størrelsen av ( int ) , sammenligningsfunksjon ) ;

der arr er pekeren til matrisen, 6 er antall elementer i matrisen, sizeof(int) er størrelsen på hvert element i matrisen, og comparison_function er funksjonen som bestemmer rekkefølgen elementene sorteres i.

2: qsort-funksjonen velger et pivotelement. La oss si at den velger 3 som pivot.

3: qsort-funksjonen deler opp matrisen i to undermatriser: {2, 1} og {5, 8, 9}. Den første undergruppen inneholder elementer som er mindre enn eller lik pivoten, og den andre undergruppen inneholder elementer som er større enn pivoten.

4: qsort-funksjonen kaller seg rekursivt på hver av sub-arrayene.

5: qsort-funksjonen velger pivoter for hver av undermatrisene. La oss si at den velger 1 og 8 som pivot.

6: qsort-funksjonen deler opp hver undermatrise i ytterligere to undermatriser, og kaller seg rekursivt på hver av disse undermatrisene.

7: qsort-funksjonen kombinerer de sorterte undermatrisene tilbake til en enkelt sortert matrise: {1, 2} og {5, 8, 9} blir {1, 2, 5, 8, 9}.

8: Hele den sorterte matrisen returneres.

Implementering av qsort i C-programmering

Følgende kode viser implementeringen av qsort funksjon i C-programmering.

#include

#include

int sammenligne ( konst tomrom * a1 , konst tomrom * b1 )

{

komme tilbake ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int hoved- ( )

{

int Jeg = 0 , på en = 6 ;

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

qsort ( array , på en , størrelsen av ( int ) , sammenligne ) ;

printf ( 'Sorterte elementer i Array ved hjelp av qsort() er: ' ) ;

til ( Jeg = 0 ; Jeg < på en ; Jeg ++ ) {

printf ( '%d' , array [ Jeg ] ) ; }

komme tilbake 0 ;

}

I koden ovenfor lages først en sammenligningsfunksjon med to parametere a1 og b1 . Deretter starter kjøringen fra main(). I hovedsak initialiserer vi to heltallsvariabler som i=0 og num=6. Deretter erklærer vi en matrise med seks elementer som {5, 2, 8, 3, 1, 9} . Etter dette qsort() har tre parametere av matrisetype, num-parameteren forteller de totale elementene i en matrise, størrelse på (int) refererer til den totale størrelsen på arrayet, og compare brukes til å sammenligne array-elementer én etter én. Skriv deretter ut den sorterte matrisen vha printf() funksjon i C.

Produksjon

Konklusjon

qsort er en kraftig funksjon i C-programmering for sortering av matriser av enhver type. Den bruker en quicksort-algoritme for å sortere elementene i stigende eller synkende rekkefølge basert på en sammenligningsfunksjon. Guiden ovenfor viser deg en enkel måte å implementere qsort i C-programmering med en trinn-for-trinn-bearbeiding av qsort algoritme.