Hogyan valósítsuk meg a beszúrási rendezést C-ben példával

Hogyan Valositsuk Meg A Beszurasi Rendezest C Ben Peldaval



Az „Insertion Sort” néven ismert rendezési algoritmus egyszerű és hatékony kis adatkészletek esetén. Ez egy összehasonlításon alapuló módszer, amely úgy rendezi el az elemeket, hogy végighurkol egy tömböt, értékeli az egyes elemeket az előtte lévőkhöz képest, és szükség esetén kicseréli őket. Ebben a bejegyzésben egy példát mutatunk be a beillesztési rendezés megvalósítására C nyelven.

Mi az a beillesztési rendezés C-ben?

A beszúrásos rendezésnek nevezett rendezési módszer minden egyes elemet a szomszédos elemekkel egyeztet, miközben egy tömbön keresztül ismétlődik. Az előtte lévőnél kisebb elem kerül be a rendezett altömbbe a megfelelő helyre.

A további szemléltetés kedvéért bemutattam egy példát, amelyben egy négy elemből álló tömböt vettem figyelembe egy tömbben, mint pl. arr[]= {5, 4, 60, 9} és ezt az elemet növekvő sorrendbe szeretnénk rendezni a beillesztési rendezés használatával. A következő interakciók magyarázzák a beillesztési rendezés teljes száraz futtatását:







1. iteráció

5 4 60 9

Most van egy tömbünk arr[5, 4, 60, 9] formátumban, a beillesztési rendezés első iterációjában először összehasonlítjuk az első két elemet, például az 5-öt és a 4-et. Mivel az arr[5] > arr[4] felcseréljük őket, hogy a tömböt növekvő sorrendbe rendezzük. Most a tömb a következő lesz:



4 5 60 9

2. iteráció

4 5 60 9

A második iterációban összehasonlítjuk a következő két elemet, mint például az arr[5] és az arr[60].



Mivel az arr[5] < arr[60], így a csere nem történik meg, mivel az már növekvő sorrendben van rendezve. Most a tömb a következő lesz:





4 5 60 9

3. iteráció

4 5 60 9

A harmadik iterációhoz hasonlóan a harmadik és negyedik elemet, mint például az arr[60] és az arr[9], párosítjuk.

Most látjuk, hogy az arr[60] > arr[9], tehát csere történik, akkor a tömb növekvő sorrendbe rendeződik.



4 5 9 60

Így működik a beillesztési rendezés C-ben, amely könnyen rendezi a tömbelemeket növekvő vagy csökkenő sorrendben.

Beillesztési folyamatábra

A következő a beillesztési rendezés algoritmusának folyamatábrája:

Beillesztési rendezés megvalósítási példája C-ben

Először is szükségünk van egy olyan elemek gyűjteményére, amelyeket csökkenő és növekvő sorrendbe kell rendezni a beillesztési rendezési metódus felépítéséhez C-ben. Tegyük fel, hogy a példa céljaira számok tömbjével van dolgunk {5, 4, 60, 9} :

#include

üres insertionsort_ascending ( int arr1 [ ] , int n ) {

int én , j , a kulcsom ;

A //for ciklus az i értékek iterálására szolgál 1-től i

számára ( én = 1 ; én < n ; én ++ ) {

a kulcsom = arr1 [ én ] ;

j = én - 1 ;

míg ( j >= 0 && arr1 [ j ] > a kulcsom ) {

arr1 [ j + 1 ] = arr1 [ j ] ;

j = j - 1 ;

}

arr1 [ j + 1 ] = a kulcsom ;

}

}

üres insertionsort_descending ( int arr2 [ ] , int m ) {

int én , j , a kulcsom ;

//egy másik for ciklus jön létre az i értékek iterálására 1-től i

számára ( én = 1 ; én < m ; én ++ ) {

a kulcsom = arr2 [ én ] ;

j = én - 1 ;

míg ( j >= 0 && arr2 [ j ] < a kulcsom ) {

arr2 [ j + 1 ] = arr2 [ j ] ;

j = j - 1 ;

}

arr2 [ j + 1 ] = a kulcsom ;

}

}

int fő- ( ) {

//Beszúrás-Rendezés csökkenő sorrendben

int my_arr [ ] = { 5 , 4 , 60 , 9 } ; //inicializál egy my_arr[]-t, amelynek négy értéke van

int m = mérete ( my_arr ) / mérete ( my_arr [ 0 ] ) ;

insertionsort_descending ( my_arr , m ) ;

printf ( 'Rendezett tömb csökkenő sorrendben: ' ) ;

számára ( int én = 0 ; én < m ; én ++ )

printf ( '%d' , my_arr [ én ] ) ;

printf ( ' \n ' ) ;

//Beszúrás-Rendezés növekvő sorrendben

int n = mérete ( my_arr ) / mérete ( my_arr [ 0 ] ) ;

insertionsort_ascending ( arr2 , n ) ;

printf ( 'Rendezett tömb növekvő sorrendben: ' ) ;

számára ( int én = 0 ; én < n ; én ++ )

printf ( '%d' , my_arr [ én ] ) ;

printf ( ' \n ' ) ;

Visszatérés 0 ;

}

Ebben a kódban két módszer insertionsort_descending() , és insertionsort_ascending() vegyük a tömb értékeit my_arr[] . A kód ezután a hurokhoz a tömb elemei közötti iterációhoz.

Mindkét függvényt meghívjuk a főfüggvényben, miután a tömböket csökkenő és növekvő sorrendbe rendezték. Ezt követően a for ciklusok segítségével nyomtatjuk ki a rendezett tömböt.

Amikor ezt a programot futtatjuk, a várt kimenet alább kerül:

Következtetés

A beillesztési rendezés gyors és egyszerű módja a tömbök csökkenő vagy növekvő sorrendben történő rendezésének. Kis adatkészletek esetén ez a rendezési technika jól teljesít. Amint az a fenti útmutatóból látható, egyszerűen megvalósítható egy példa egy C programra, hogy könnyen megértse a beszúrási rendezést csökkenő és növekvő sorrendben.