Sådan sorteres arrays med qsort() i C

Sadan Sorteres Arrays Med Qsort I C



Sortering er en grundlæggende operation i computerprogrammering, og det involverer at arrangere en samling af data i en bestemt rækkefølge. En måde at sortere et array af elementer i C er at bruge qsort() funktion, som er en del af standardbiblioteket. Denne funktion tager et array, dets størrelse og en sammenligningsfunktion som argumenter og sorterer som standard arrayet i stigende rækkefølge.

Denne guideline illustrerer sorteringen af ​​arrays ved hjælp af qsort() funktion i C og hjælper dig også med at forstå det ved C-eksempelkoder.

qsort() i C

C standard bibliotek letter os med qsort() funktion som simpelthen bruges til at sortere arrays. Det er en ekstremt optimeret og hurtig funktion, der kan fungere med enhver datatype-array.







Header-File ved hjælp af qsort() i C

Det qsort() metode er defineret inde i stdlib.h header-fil, som skal defineres før implementering qsort() i et C-program.



#include

Erklæring om qsort()

Erklæringen af qsort() funktion er som følger:



ugyldig qsort ( ugyldig * grundlag , antal_elementer , størrelse_af_element , sammenligningsfunktion )

Parametre for qsort() funktion

Parametrene for qsort() funktion er:





grundlag: Marker til det første element i arrayet, der skal sorteres.

antal_elementer: Antal elementer i arrayet, der skal sorteres.



størrelse_af_element: Størrelse i bytes af hvert element i arrayet.

sammenligningsfunktion: Pointer til en sammenligningsfunktion, der definerer rækkefølgen af ​​elementerne.

Hvad er sammenligningsfunktion i qsort()

Sammenligningsfunktionen tager to parametre, begge af typen const void*, som peger på de elementer, der sammenlignes. Funktionen skal returnere et heltal mindre end, lig med eller større end 0, afhængigt af om det første element skal sorteres henholdsvis før, på samme position eller efter det andet element.

Sådan fungerer qsort i C

Det qsort() funktion fungerer på følgende måde:

Bemærk: Her overvejer vi en int arr[] = {5, 2, 8, 3, 1, 9};

1: Til at begynde med vil qsort-funktionen blive kaldt med følgende parametre:

qsort ( arr , 6 , størrelse på ( int ) , sammenligningsfunktion ) ;

hvor arr er markøren til arrayet, 6 er antallet af elementer i arrayet, sizeof(int) er størrelsen af ​​hvert element i arrayet, og comparison_function er den funktion, der bestemmer den rækkefølge, som elementerne sorteres i.

2: Funktionen qsort vælger et pivotelement. Lad os sige, at den vælger 3 som omdrejningspunkt.

3: Funktionen qsort opdeler arrayet i to underarrays: {2, 1} og {5, 8, 9}. Det første sub-array indeholder elementer, der er mindre end eller lig med pivoten, og det andet sub-array indeholder elementer, der er større end pivoten.

4: qsort-funktionen kalder sig selv rekursivt på hver af underarrayerne.

5: Funktionen qsort vælger pivoter for hver af underarrayerne. Lad os sige, at den vælger 1 og 8 som omdrejningspunkter.

6: Funktionen qsort opdeler hver under-array i yderligere to under-arrays og kalder sig selv rekursivt på hver af disse under-arrays.

7: Funktionen qsort kombinerer de sorterede underarrays tilbage til et enkelt sorteret array: {1, 2} og {5, 8, 9} bliver til {1, 2, 5, 8, 9}.

8: Hele det sorterede array returneres.

Implementering af qsort i C Programmering

Følgende kode viser implementeringen af qsort funktion i C-programmering.

#include

#include

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

{

Vend tilbage ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int vigtigste ( )

{

int jeg = 0 , på en = 6 ;

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

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

printf ( 'Sorterede elementer i Array ved hjælp af qsort() er: ' ) ;

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

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

Vend tilbage 0 ;

}

I ovenstående kode laves for det første en sammenligningsfunktion med to parametre a1 og b1 . Derefter starter udførelsen fra main(). I hovedsagen initialiserer vi to heltalsvariable som i=0 og num=6. Så erklærer vi et array med seks elementer som {5, 2, 8, 3, 1, 9} . Efter dette qsort() har tre parametre af matrixtype, num-parameteren fortæller det samlede antal elementer i en matrix, størrelse på (int) refererer til den samlede størrelse af arrayet, og compare bruges til at sammenligne array-elementer én efter én. Udskriv derefter det sorterede array vha printf() funktion i C.

Produktion

Konklusion

qsort er en kraftfuld funktion i C-programmering til sortering af arrays af enhver type. Den bruger en quicksort-algoritme til at sortere elementerne i stigende eller faldende rækkefølge baseret på en sammenligningsfunktion. Ovenstående guide viser dig en nem måde at implementere qsort i C-programmering med en trin-for-trin bearbejdning af qsort algoritme.