Jak implementovat řazení vkládání v C s příkladem

Jak Implementovat Razeni Vkladani V C S Prikladem



Algoritmus řazení známý jako „Insertion Sort“ je přímočarý a účinný pro malé soubory dat. Jde o metodu založenou na porovnání, která uspořádává prvky tak, že prochází polem, vyhodnocuje každý prvek oproti těm, které před ním byly, a v případě potřeby je vyměňuje. V tomto příspěvku si projdeme příklad, jak implementovat řazení vkládání v jazyce C.

Co je řazení vložení v C?

Metoda třídění nazývaná vložení třídění porovnává každý jednotlivý prvek se sousedními prvky při iteraci přes pole. Menší prvek než ten před vložením do tříděného podpole na příslušné místo.

Pro další ilustraci jsem předvedl příklad, ve kterém jsem uvažoval o poli čtyř prvků v poli, jako je např arr[]= {5, 4, 60, 9} a chceme tento prvek seřadit vzestupně pomocí řazení vložení. Následující interakce vysvětlují úplný suchý průběh řazení vložení:







Iterace 1

5 4 60 9

Nyní máme pole jako arr[5, 4, 60, 9], v první iteraci řazení nejprve porovnáme první dva prvky, jako je 5 a 4, protože arr[5] je > arr[4], takže zaměníme je, abychom seřadili pole ve vzestupném pořadí. Nyní bude pole:



4 5 60 9

Iterace 2

4 5 60 9

Ve druhé iteraci porovnáme další dva prvky, jako je arr[5] s arr[60].



Protože arr[5] < arr[60], tak k záměně nedochází, protože je již seřazeno vzestupně. Nyní se pole změní na:





4 5 60 9

Iterace 3

4 5 60 9

Stejně jako ve třetí iteraci porovnáme třetí a čtvrtý prvek jako arr[60] s arr[9].

Nyní vidíme, že arr[60] > arr[9], takže dojde k záměně a pole se seřadí vzestupně.



4 5 9 60

Takto funguje řazení vložení v C, které snadno třídí prvek pole ve vzestupném nebo sestupném pořadí.

Vývojový diagram řazení vložení

Následuje vývojový diagram algoritmu řazení vložení:

Příklad implementace řazení vložení v C

Nejprve vyžadujeme kolekci prvků, které je třeba seřadit v sestupném a vzestupném pořadí, abychom vytvořili metodu řazení vložení v C. Předpokládejme, že pro účely tohoto příkladu máme co do činění s polem čísel {5, 4, 60, 9} :

#include

prázdnota insertionsort_ascending ( int arr1 [ ] , int n ) {

int i , j , můj klíč ;

//cyklus for se používá k iteraci hodnot i od 1 do i

pro ( i = 1 ; i < n ; i ++ ) {

můj klíč = arr1 [ i ] ;

j = i - 1 ;

zatímco ( j >= 0 && arr1 [ j ] > můj klíč ) {

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

j = j - 1 ;

}

arr1 [ j + 1 ] = můj klíč ;

}

}

prázdnota insertionsort_descending ( int arr2 [ ] , int m ) {

int i , j , můj klíč ;

//je vytvořen další cyklus for pro iteraci hodnot i z 1 na i

pro ( i = 1 ; i < m ; i ++ ) {

můj klíč = arr2 [ i ] ;

j = i - 1 ;

zatímco ( j >= 0 && arr2 [ j ] < můj klíč ) {

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

j = j - 1 ;

}

arr2 [ j + 1 ] = můj klíč ;

}

}

int hlavní ( ) {

//Vložení-Seřadit sestupně

int můj_arr [ ] = { 5 , 4 , 60 , 9 } ; //inicializovat soubor my_arr[] se čtyřmi hodnotami

int m = velikost ( můj_arr ) / velikost ( můj_arr [ 0 ] ) ;

insertionsort_descending ( můj_arr , m ) ;

printf ( 'Seřazené pole v sestupném pořadí: ' ) ;

pro ( int i = 0 ; i < m ; i ++ )

printf ( '%d' , můj_arr [ i ] ) ;

printf ( ' \n ' ) ;

//Vložení-Třídit se vzestupným pořadím

int n = velikost ( můj_arr ) / velikost ( můj_arr [ 0 ] ) ;

insertionsort_ascending ( arr2 , n ) ;

printf ( 'Seřazené pole ve vzestupném pořadí: ' ) ;

pro ( int i = 0 ; i < n ; i ++ )

printf ( '%d' , můj_arr [ i ] ) ;

printf ( ' \n ' ) ;

vrátit se 0 ;

}

V tomto kódu dvě metody insertionsort_descending() , a insertionsort_ascending() vzít hodnoty pole můj_arr[] . Kód pak používá a pro smyčku iterovat prvky pole.

Obě funkce voláme v hlavní funkci, jakmile seřadí pole v sestupném a vzestupném pořadí. Poté se cykly for použijí k tisku setříděného pole.

Když spustíme tento program, očekávaný výstup je umístěn níže:

Závěr

Vložení řazení je rychlý a snadný způsob, jak třídit pole v sestupném nebo vzestupném pořadí. U malých souborů dat tato technika třídění funguje dobře. Jak můžete vidět ve výše uvedené příručce, je jednoduché implementovat příklad programu v jazyce C, abyste snadno pochopili řazení vkládání v sestupném i vzestupném pořadí.