Arrays sorteren met qsort() in C

Arrays Sorteren Met Qsort In C



Sorteren is een fundamentele bewerking bij het programmeren van computers en het gaat om het rangschikken van een verzameling gegevens in een specifieke volgorde. Een manier om een ​​reeks elementen in C te sorteren, is door de qsorteren() functie, die deel uitmaakt van de standaardbibliotheek. Deze functie neemt een array, de grootte ervan en een vergelijkingsfunctie als argumenten en sorteert de array standaard in oplopende volgorde.

Deze richtlijn illustreert het sorteren van arrays met behulp van de qsorteren() functie in C en helpt u het ook te begrijpen aan de hand van C-voorbeeldcodes.

qsort() in C

C-standaardbibliotheek faciliteert ons met qsorteren() functie die eenvoudig wordt gebruikt om arrays te sorteren. Het is een extreem geoptimaliseerde en snelle functie die kan werken met elk datatype-array.







Header-File met behulp van qsort() in C

De qsorteren() methode is gedefinieerd in de standaard.h header-bestand, dat moet worden gedefinieerd voordat het wordt geïmplementeerd qsorteren() in een C-programma.



#include

Verklaring van qsort()

De verklaring van qsorteren() functie is als volgt:



leegte sorteer ( leegte * baseren , aantal_van_elementen , size_of_element , vergelijking_functie )

Parameters van de qsort()-functie

De parameters van de qsorteren() functie zijn:





baseren: Aanwijzer naar het eerste element van de array dat moet worden gesorteerd.

aantal_van_elementen: Aantal elementen in de array dat moet worden gesorteerd.



size_of_element: Grootte in bytes van elk element in de array.

vergelijking_functie: Pointer naar een vergelijkingsfunctie die de volgorde van de elementen definieert.

Wat is de vergelijkingsfunctie in qsort()

De vergelijkingsfunctie neemt twee parameters, beide van het type const void*, die verwijzen naar de elementen die worden vergeleken. De functie moet een geheel getal teruggeven dat kleiner is dan, gelijk is aan of groter is dan 0, afhankelijk van of het eerste element respectievelijk vóór, op dezelfde positie of na het tweede element moet worden gesorteerd.

Hoe qsort werkt in C

De qsorteren() functie werkt als volgt:

Opmerking: Hier overwegen we een int arr[] = {5, 2, 8, 3, 1, 9};

1: In eerste instantie wordt de functie qsort aangeroepen met de volgende parameters:

sorteer ( arr , 6 , De grootte van ( int ) , vergelijking_functie ) ;

waarbij arr de aanwijzer naar de array is, 6 het aantal elementen in de array is, sizeof(int) de grootte is van elk element in de array, en vergelijking_functie de functie is die de volgorde bepaalt waarin de elementen worden gesorteerd.

2: De functie qsort selecteert een spilelement. Laten we zeggen dat het selecteert 3 als de spil.

3: De functie qsort verdeelt de array in twee subarrays: {2, 1} en {5, 8, 9}. De eerste subarray bevat elementen die kleiner zijn dan of gelijk zijn aan de spil, en de tweede subarray bevat elementen die groter zijn dan de spil.

4: De functie qsort roept zichzelf recursief aan op elk van de subarrays.

5: De functie qsort selecteert draaipunten voor elk van de subarrays. Laten we zeggen dat het 1 en 8 selecteert als de draaipunten.

6: De functie qsort verdeelt elke subarray in nog twee subarrays en roept zichzelf recursief op elk van deze subarrays aan.

7: De functie qsort combineert de gesorteerde subarrays weer tot één gesorteerde array: {1, 2} en {5, 8, 9} worden {1, 2, 5, 8, 9}.

8: De volledige gesorteerde array wordt geretourneerd.

Implementatie van qsort in C-programmering

De volgende code toont de implementatie van sorteer functie in C-programmering.

#include

#include

int vergelijken ( const leegte * een1 , const leegte * b1 )

{

opbrengst ( * ( int * ) een1 - * ( int * ) b1 ) ;

}

int voornaamst ( )

{

int i = 0 , op een = 6 ;

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

sorteer ( reeks , op een , De grootte van ( int ) , vergelijken ) ;

printf ( 'Gesorteerde elementen van array met behulp van qsort() zijn: ' ) ;

voor ( i = 0 ; i < op een ; i ++ ) {

printf ( '%D ' , reeks [ i ] ) ; }

opbrengst 0 ;

}

In de bovenstaande code wordt eerst een vergelijkingsfunctie gemaakt met twee parameters een1 En b1 . Vervolgens begint de uitvoering vanaf main(). In het algemeen initialiseren we twee integer-variabelen als i=0 en num=6. Vervolgens declareren we een array met zes elementen als {5, 2, 8, 3, 1, 9} . Na dit qsorteren() hebben drie parameters van het array-type, de num-parameter vertelt het totale aantal elementen van een array, groottevan(int) verwijst naar de totale grootte van de array, en vergelijken wordt gebruikt om array-elementen één voor één te vergelijken. Druk vervolgens de gesorteerde reeks af met behulp van printf() functie in C.

Uitgang

Conclusie

sorteer is een krachtige functie in C-programmering voor het sorteren van arrays van elk type. Het gebruikt een quicksort-algoritme om de elementen in oplopende of aflopende volgorde te sorteren op basis van een vergelijkingsfunctie. De bovenstaande gids toont u een eenvoudige manier om qsort in C-programmering te implementeren met een stapsgewijze werking sorteer algoritme.