Kaip rūšiuoti masyvus naudojant qsort() C

Kaip Rusiuoti Masyvus Naudojant Qsort C



Rūšiavimas yra pagrindinė kompiuterio programavimo operacija, apimanti duomenų rinkimo išdėstymą tam tikra tvarka. Vienas iš būdų rūšiuoti elementų masyvą C yra naudoti qsort () funkcija, kuri yra standartinės bibliotekos dalis. Ši funkcija naudoja masyvą, jo dydį ir palyginimo funkciją kaip argumentus ir pagal numatytuosius nustatymus rūšiuoja masyvą didėjančia tvarka.

Šios gairės iliustruoja masyvų rūšiavimą naudojant qsort () funkcija C ir taip pat padeda suprasti tai naudojant C pavyzdinius kodus.

qsort() C

C standartinė biblioteka mums palengvina qsort () funkcija, kuri tiesiog naudojama masyvams rūšiuoti. Tai itin optimizuota ir greita funkcija, galinti veikti su bet kokio tipo duomenų masyve.







Antraštė-failas naudojant qsort() C

The qsort () metodas yra apibrėžtas viduje stdlib.h antraštės failą, kuris turi būti apibrėžtas prieš įdiegiant qsort () C programoje.



#include

qsort() deklaracija

Deklaracija apie qsort () funkcija yra tokia:



tuštuma qsort ( tuštuma * bazė , elementų_skaičius , elemento_dydis , palyginimo_funkcija )

Funkcijos qsort() parametrai

Parametrai qsort () funkcijos yra:





bazė: Nukreipkite žymiklį į pirmąjį rūšiuojamo masyvo elementą.

elementų_skaičius: Elementų skaičius masyve, kurį reikia rūšiuoti.



size_of_element: Kiekvieno masyvo elemento dydis baitais.

palyginimo_funkcija: Rodiklis į palyginimo funkciją, kuri apibrėžia elementų tvarką.

Kas yra palyginimo funkcija qsort()

Palyginimo funkcijai naudojami du parametrai, kurių abu tipas yra const void*, kurie nurodo lyginamuosius elementus. Funkcija turi grąžinti sveikąjį skaičių, mažesnį už 0, lygų arba didesnį už 0, atsižvelgiant į tai, ar pirmasis elementas turi būti rūšiuojamas atitinkamai prieš, toje pačioje vietoje ar po antrojo elemento.

Kaip qsort veikia C

The qsort () funkcija veikia taip:

Pastaba: Čia mes svarstome an int arr[] = {5, 2, 8, 3, 1, 9};

1: Iš pradžių funkcija qsort bus iškviesta naudojant šiuos parametrus:

qsort ( arr , 6 , dydis ( tarpt ) , palyginimo_funkcija ) ;

kur arr yra masyvo rodyklė, 6 yra elementų skaičius masyve, sizeof(int) yra kiekvieno masyvo elemento dydis, o palyginimo_funkcija yra funkcija, kuri nustato elementų rūšiavimo tvarką.

2: Funkcija qsort pasirenka sukimosi elementą. Tarkime, kad pasirenka 3 kaip ašis.

3: Funkcija qsort padalija masyvą į du antrinius masyvus: {2, 1} ir {5, 8, 9}. Pirmajame antriniame masyve yra elementų, kurie yra mažesni arba lygūs jam, o antrajame antriniame masyve yra elementai, kurie yra didesni už sukimąsi.

4: Funkcija qsort rekursyviai išsikviečia save kiekviename antriniame masyve.

5: Funkcija qsort parenka kiekvieno submasyvo sukinius. Tarkime, kad jis pasirenka 1 ir 8 kaip sukimosi taškus.

6: Funkcija qsort padalija kiekvieną antrinį masyvą į dar du antrinius masyvus ir rekursyviai išsikviečia kiekvieną iš šių masyvų.

7: Funkcija qsort sujungia surūšiuotus antrinius masyvus į vieną surūšiuotą masyvą: {1, 2} ir {5, 8, 9} tampa {1, 2, 5, 8, 9}.

8: Grąžinamas visas surūšiuotas masyvas.

Qsort įdiegimas C programavimo programoje

Šis kodas rodo įgyvendinimą qsort funkcija C programuojant.

#include

#include

tarpt palyginti ( konst tuštuma * a1 , konst tuštuma * b1 )

{

grąžinti ( * ( tarpt * ) a1 - * ( tarpt * ) b1 ) ;

}

tarpt pagrindinis ( )

{

tarpt i = 0 , ant vieno = 6 ;

tarpt masyvas [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;

qsort ( masyvas , ant vieno , dydis ( tarpt ) , palyginti ) ;

printf ( 'Surūšiuoti masyvo elementai naudojant qsort() yra: ' ) ;

dėl ( i = 0 ; i < ant vieno ; i ++ ) {

printf ( '%d' , masyvas [ i ] ) ; }

grąžinti 0 ;

}

Pirmiau pateiktame kode pirmiausia atliekama palyginimo funkcija naudojant du parametrus a1 ir b1 . Tada vykdymas prasideda nuo main (). Iš esmės inicijuojame du sveikųjų skaičių kintamuosius kaip i=0 ir num=6. Tada paskelbiame masyvą su šešiais elementais kaip {5, 2, 8, 3, 1, 9} . Po šito qsort () turi tris masyvo tipo parametrus, parametras num nurodo visus masyvo elementus, dydis (tarp) reiškia bendrą masyvo dydį, o palyginimas naudojamas masyvo elementams lyginti po vieną. Tada atspausdinkite surūšiuotą masyvą naudodami printf() funkcija C.

Išvestis

Išvada

qsort yra galinga C programavimo funkcija, skirta rūšiuoti bet kokio tipo masyvus. Jis naudoja greito rūšiavimo algoritmą elementams rūšiuoti didėjimo arba mažėjimo tvarka pagal palyginimo funkciją. Aukščiau pateiktame vadove parodytas paprastas būdas įdiegti qsort į C programavimą, naudojant žingsnis po žingsnio qsort algoritmas.