Ez az útmutató bemutatja a tömbök rendezését a qsort() függvény C nyelvben, és C példakódokkal is segít megérteni.
qsort() C-ben
A C standard könyvtár megkönnyíti számunkra qsort() függvény, amelyet egyszerűen a tömbök rendezésére használnak. Ez egy rendkívül optimalizált és gyors funkció, amely bármilyen adattípus tömbjével működik.
Header-File a qsort() használatával C-ben
A qsort() metódus belül van definiálva stdlib.h fejlécfájlt, amelyet a megvalósítás előtt meg kell határozni qsort() egy C programban.
#include
A qsort() deklarációja
A nyilatkozat qsort() a funkció a következő:
üres qsort ( üres * bázis , elemek_száma , elem_mérete , összehasonlító_függvény )
A qsort() függvény paraméterei
A paraméterek a qsort() funkciók a következők:
bázis: Mutasson a tömb első rendezendő elemére.
number_of_elements: A rendezendő tömb elemeinek száma.
size_of_element: A tömb minden elemének mérete bájtban.
összehasonlítási_függvény: Mutató egy összehasonlító függvényre, amely meghatározza az elemek sorrendjét.
Mi az összehasonlító függvény a qsort()-ban
Az összehasonlító függvény két paramétert vesz fel, mindkettő const void* típusú, amelyek az összehasonlítandó elemekre mutatnak. A függvénynek 0-nál kisebb, egyenlő vagy nagyobb egész számot kell visszaadnia, attól függően, hogy az első elemet a második elem előtt, ugyanabban a helyen vagy a második elem után kell-e rendezni.
Hogyan működik a qsort C-ben
A qsort() funkció a következő módon működik:
Jegyzet: Itt egy int arr[] = {5, 2, 8, 3, 1, 9};
1: Kezdetben a qsort függvényt a következő paraméterekkel hívják meg:
qsort ( arr , 6 , mérete ( int ) , összehasonlító_függvény ) ;ahol arr a tömbre mutató mutató, 6 a tömb elemeinek száma, a sizeof(int) a tömb egyes elemeinek mérete, és az összehasonlítás_függvény az a függvény, amely meghatározza az elemek rendezési sorrendjét.
2: A qsort függvény kiválaszt egy pivot elemet. Tegyük fel, hogy kiválaszt 3 mint a forgócsap.
3: A qsort függvény a tömböt két altömbre particionálja: {2, 1} és {5, 8, 9}. Az első altömb olyan elemeket tartalmaz, amelyek kisebbek vagy egyenlőek, mint a pivot, a második altömb pedig a pivotnál nagyobb elemeket tartalmaz.
4: A qsort függvény rekurzív módon meghívja magát az egyes altömbökön.
5: A qsort függvény minden egyes altömbhöz kiválasztja a pivotokat. Tegyük fel, hogy az 1-et és a 8-at választja ki forgáspontként.
6: A qsort függvény minden egyes altömböt további két altömbre particionál, és rekurzív módon meghívja magát ezeken az altömbökön.
7: A qsort függvény a rendezett altömböket egyetlen rendezett tömbbe egyesíti: {1, 2} és {5, 8, 9} lesz {1, 2, 5, 8, 9}.
8: A teljes rendezett tömb visszaadásra kerül.
A qsort megvalósítása C programozásban
A következő kód a megvalósítását mutatja be qsort funkció a C programozásban.
#include#include
int összehasonlítani ( const üres * a1 , const üres * b1 )
{
Visszatérés ( * ( int * ) a1 - * ( int * ) b1 ) ;
}
int fő- ( )
{
int én = 0 , az egyiken = 6 ;
int sor [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;
qsort ( sor , az egyiken , mérete ( int ) , összehasonlítani ) ;
printf ( 'A tömb qsort() segítségével rendezett elemei a következők: ) ;
számára ( én = 0 ; én < az egyiken ; én ++ ) {
printf ( '%d' , sor [ én ] ) ; }
Visszatérés 0 ;
}
A fenti kódban először egy összehasonlító függvény készül két paraméterrel a1 és b1 . Ezután a végrehajtás a main()-ból indul. Főként két egész változót inicializálunk i=0 és num=6 értékre. Ezután egy hat elemű tömböt deklarálunk mint {5, 2, 8, 3, 1, 9} . Ezt követően qsort() három tömb típusú paraméterrel rendelkezik, a num paraméter megmondja a tömb összes elemét, mérete (int) a tömb teljes méretére utal, az összehasonlítás pedig a tömbelemek egyenkénti összehasonlítására szolgál. Ezután nyomtassa ki a rendezett tömböt a segítségével printf() funkció C-ben.
Kimenet
Következtetés
qsort egy hatékony funkció a C programozásban bármilyen típusú tömbök rendezésére. Gyorsrendezési algoritmust használ az elemek növekvő vagy csökkenő sorrendbe rendezésére egy összehasonlító függvény alapján. A fenti útmutató bemutatja a qsort egyszerű megvalósítási módját C programozásban, lépésről lépésre qsort algoritmus.