Š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.