Kuinka lajitella taulukoita qsort()-komennolla C:ssä

Kuinka Lajitella Taulukoita Qsort Komennolla C Ssa



Lajittelu on tietokoneohjelmoinnin perustavanlaatuinen toimenpide, ja siihen kuuluu datakokoelman järjestäminen tiettyyn järjestykseen. Yksi tapa lajitella elementtijoukko C:ssä on käyttää qsort() funktio, joka on osa vakiokirjastoa. Tämä funktio ottaa taulukon, sen koon ja vertailufunktion argumentteina ja lajittelee taulukon oletusarvoisesti nousevaan järjestykseen.

Tämä ohje kuvaa taulukoiden lajittelua käyttämällä qsort() funktio C:ssä ja auttaa myös ymmärtämään sitä C-esimerkkikoodeilla.

qsort() C:ssä

C-standardikirjasto helpottaa meitä qsort() funktio, jota käytetään yksinkertaisesti taulukoiden lajitteluun. Se on erittäin optimoitu ja nopea toiminto, joka voi toimia minkä tahansa tietotyyppien kanssa.







Otsikko-tiedosto käyttäen qsort()-komentoa C:ssä

The qsort() menetelmä on määritelty sisällä stdlib.h otsikkotiedosto, joka on määritettävä ennen käyttöönottoa qsort() C-ohjelmassa.



#include

qsort()-ilmoitus

Ilmoitus qsort() toiminto on seuraava:



mitätön qsort ( mitätön * pohja , elementtien_määrä , elementin_koko , vertailu_funktio )

qsort()-funktion parametrit

Kohteen parametrit qsort() toiminnot ovat:





pohja: Osoita lajiteltavan taulukon ensimmäistä elementtiä.

elementtien_määrä: Lajiteltavan taulukon elementtien lukumäärä.



elementin_koko: Taulukon jokaisen elementin koko tavuina.

vertailu_funktio: Osoitin vertailufunktioon, joka määrittää elementtien järjestyksen.

Mikä on vertailufunktio qsort()

Vertailufunktio ottaa kaksi parametria, molemmat tyyppiä const void*, jotka osoittavat verrattavia elementtejä. Funktion tulee palauttaa kokonaisluku, joka on pienempi, yhtä suuri tai suurempi kuin 0, riippuen siitä, tuleeko ensimmäinen elementti lajitella ennen, samaan paikkaan vai toisen elementin jälkeen.

Kuinka qsort toimii C:ssä

The qsort() toiminto toimii seuraavalla tavalla:

Huomautus: Tässä harkitsemme a int arr[] = {5, 2, 8, 3, 1, 9};

1: Aluksi qsort-funktiota kutsutaan seuraavilla parametreilla:

qsort ( arr , 6 , koko ( int ) , vertailu_funktio ) ;

missä arr on osoitin taulukkoon, 6 on taulukon elementtien lukumäärä, sizeof(int) on kunkin taulukon elementin koko ja vertailu_funktio on funktio, joka määrittää järjestyksen, jossa elementit lajitellaan.

2: Qsort-toiminto valitsee pivot-elementin. Oletetaan, että se valitsee 3 nivelenä.

3: Qsort-funktio jakaa taulukon kahteen alitaulukkoon: {2, 1} ja {5, 8, 9}. Ensimmäinen alitaulukko sisältää elementtejä, jotka ovat pienempiä tai yhtä suuria kuin pivot, ja toinen alitaulukko sisältää elementtejä, jotka ovat suurempia kuin pivot.

4: Qsort-funktio kutsuu itseään rekursiivisesti jokaisessa alitaulukossa.

5: Qsort-funktio valitsee pivotit kullekin alitaulukolle. Oletetaan, että se valitsee 1 ja 8 pivoteiksi.

6: Qsort-funktio jakaa jokaisen alitaulukon kahdeksi muuksi alitaulukoksi ja kutsuu itseään rekursiivisesti kussakin näistä alitaulukoista.

7: Qsort-funktio yhdistää lajitellut alitaulukot takaisin yhdeksi lajitetuksi taulukoksi: {1, 2} ja {5, 8, 9} muuttuvat {1, 2, 5, 8, 9}.

8: Palautetaan koko lajiteltu matriisi.

Qsortin toteutus C-ohjelmointiin

Seuraava koodi näyttää toteutuksen qsort toiminto C-ohjelmoinnissa.

#include

#include

int vertailla ( konst mitätön * a1 , konst mitätön * b1 )

{

palata ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int pää ( )

{

int i = 0 , yhdellä = 6 ;

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

qsort ( joukko , yhdellä , koko ( int ) , vertailla ) ;

printf ( 'Lajiteltu taulukon elementit qsort():lla ovat: ' ) ;

varten ( i = 0 ; i < yhdellä ; i ++ ) {

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

palata 0 ;

}

Yllä olevassa koodissa tehdään ensin vertailutoiminto kahdella parametrilla a1 ja b1 . Sitten suoritus alkaa main(). Pääasiassa alustamme kaksi kokonaislukumuuttujaa i=0 ja num=6. Sitten julistamme taulukon, jossa on kuusi elementtiä {5, 2, 8, 3, 1, 9} . Tämän jälkeen qsort() joissa on kolme taulukkotyyppistä parametria, num-parametri kertoo taulukon elementtien kokonaismäärän, koko (int) viittaa taulukon kokonaiskokoon, ja vertaa käytetään taulukon elementtien vertailuun yksitellen. Tulosta sitten lajiteltu matriisi käyttämällä printf() toiminto C:ssä.

Lähtö

Johtopäätös

qsort on tehokas C-ohjelmoinnin toiminto minkä tahansa tyyppisten taulukoiden lajitteluun. Se käyttää pikalajittelualgoritmia lajitellakseen elementit nousevaan tai laskevaan järjestykseen vertailufunktion perusteella. Yllä oleva opas näyttää helpon tavan toteuttaa qsort C-ohjelmointiin vaiheittaisen qsort algoritmi.