Шта је сортирање уметањем у Ц?
Метода сортирања која се зове сортирање уметањем поклапа сваки елемент са суседним док се понавља низ низ. Мањи елемент од оног пре него што је уметнут у сортирани подниз на одговарајућој локацији.
Да бих даље илустровао, показао сам пример у којем сам разматрао низ од четири елемента у низу као што је арр[]= {5, 4, 60, 9} и желимо да сортирамо овај елемент у растућем редоследу користећи сортирање уметањем. Следеће интеракције објашњавају комплетан суви рад сортирања уметањем:
Итерација 1
5 | 4 | 60 | 9 |
Сада имамо низ као арр[5, 4, 60, 9], у првој итерацији сортирања уметањем прво упоређујемо прва два елемента као што су 5 и 4, како је арр[5] > арр[4] тако замењујемо их да сортирамо низ у растућем редоследу. Сада ће низ бити:
4 | 5 | 60 | 9 |
Итерација 2
4 | 5 | 60 | 9 |
У другој итерацији поредимо следећа два елемента, као што је арр[5] са арр[60].
Како је арр[5] < арр[60] тако се замена не дешава јер је већ сортирана у растућем редоследу. Сада, низ постаје:
4 | 5 | 60 | 9 |
Итерација 3
4 | 5 | 60 | 9 |
Као иу трећој итерацији, упарујемо трећи и четврти елемент као што је арр[60] са арр[9].
Сада видимо да је арр[60] > арр[9] тако да долази до замене, тада ће се низ сортирати у растућем редоследу.
4 | 5 | 9 | 60 |
Овако функционише сортирање уметањем у Ц који лако сортира елемент низа у растућем или опадајућем редоследу.
Дијаграм тока сортирања уметања
Следи дијаграм тока алгоритма сортирања уметањем:
Пример имплементације сортирања уметањем у Ц
Прво нам је потребна колекција елемената које треба сортирати у опадајућем и растућем редоследу да бисмо направили метод сортирања уметањем у Ц. Претпоставимо за потребе овог примера да имамо посла са низом бројева {5, 4, 60, 9} :
#инцлуде <стдио.х>празнина инсертионсорт_асцендинг ( инт арр1 [ ] , инт н ) {
инт и , ј , мој кључ ;
//фор петља се користи за понављање и вредности од 1 до и<н
за ( и = 1 ; и < н ; и ++ ) {
мој кључ = арр1 [ и ] ;
ј = и - 1 ;
док ( ј >= 0 && арр1 [ ј ] > мој кључ ) {
арр1 [ ј + 1 ] = арр1 [ ј ] ;
ј = ј - 1 ;
}
арр1 [ ј + 1 ] = мој кључ ;
}
}
празнина инсертионсорт_десцендинг ( инт арр2 [ ] , инт м ) {
инт и , ј , мој кључ ;
//друга фор петља је креирана за понављање и вредности од 1 до и<м
за ( и = 1 ; и < м ; и ++ ) {
мој кључ = арр2 [ и ] ;
ј = и - 1 ;
док ( ј >= 0 && арр2 [ ј ] < мој кључ ) {
арр2 [ ј + 1 ] = арр2 [ ј ] ;
ј = ј - 1 ;
}
арр2 [ ј + 1 ] = мој кључ ;
}
}
инт главни ( ) {
//Инсертион-Сорт у опадајућем редоследу
инт ми_арр [ ] = { 5 , 4 , 60 , 9 } ; //иницијализујемо ми_арр[] са четири вредности
инт м = величина ( ми_арр ) / величина ( ми_арр [ 0 ] ) ;
инсертионсорт_десцендинг ( ми_арр , м ) ;
принтф ( 'Сортиран низ у опадајућем редоследу: ' ) ;
за ( инт и = 0 ; и < м ; и ++ )
принтф ( '%д' , ми_арр [ и ] ) ;
принтф ( ' \н ' ) ;
//Инсертион-Сорт узлазним редоследом
инт н = величина ( ми_арр ) / величина ( ми_арр [ 0 ] ) ;
инсертионсорт_асцендинг ( арр2 , н ) ;
принтф ( 'Сортиран низ у растућем редоследу: ' ) ;
за ( инт и = 0 ; и < н ; и ++ )
принтф ( '%д' , ми_арр [ и ] ) ;
принтф ( ' \н ' ) ;
повратак 0 ;
}
У овом коду, две методе инсертионсорт_десцендинг() , и инсертионсорт_асцендинг() узети вредности низа од мој_арр[] . Код тада користи а за петљу за понављање кроз елементе низа.
Обе функције позивамо у главној функцији након што сортирају низове у опадајућем и растућем редоследу. Након тога, фор петље се користе за штампање сортираног низа.
Када покренемо овај програм, очекивани излаз се налази испод:
Закључак
Сортирање уметањем је брз и лак начин за сортирање низа у опадајућем или растућем низу. За мале скупове података, ова техника сортирања ради добро. Као што можете видети у горњем водичу, једноставно је имплементирати пример Ц програма да бисте лако разумели сортирање уметања у опадајућем и растућем редоследу.