Sisestussortimise rakendamine C-s näitega

Sisestussortimise Rakendamine C S Naitega



Sorteerimisalgoritm, mida tuntakse kui 'sisestussortimist', on väikeste andmekogumite jaoks lihtne ja tõhus. See on võrdluspõhine meetod, mis korraldab elemendid massiivi silmuste abil, hindab iga elementi enne seda ja vahetab neid vajadusel. Selles postituses käsitleme näidet sisestussortimise rakendamisest C-keeles.

Mis on sisestuse sortimine C-s?

Sorteerimismeetod, mida nimetatakse sisestussortimiseks, sobitab iga üksiku elemendi külgnevatega, kui see itereerib kogu massiivi. Väiksem element kui enne, kui see sisestatakse sorteeritud alamriba sobivasse kohta.

Täiendavaks illustreerimiseks olen demonstreerinud näidet, milles käsitlesin massiivi neljast elemendist koosnevat massiivi, nagu näiteks arr[]= {5, 4, 60, 9} ja me tahame selle elemendi sortida kasvavas järjekorras, kasutades sisestussortimist. Järgmised interaktsioonid selgitavad sisestamise sortimise täielikku kuivamist:







Iteratsioon 1

5 4 60 9

Meil on massiiv arr[5, 4, 60, 9] nüüd, sisestussortimise esimeses iteratsioonis võrdleme esmalt kahte esimest elementi, nagu 5 ja 4. Kuna arr[5] on > arr[4] vahetame need massiivi järjestamiseks kasvavas järjekorras. Nüüd on massiiv järgmine:



4 5 60 9

Iteratsioon 2

4 5 60 9

Teises iteratsioonis võrdleme kahte järgmist elementi, näiteks arr[5] ja arr[60].



Kuna arr[5] < arr[60], siis vahetamist ei toimu, kuna see on juba järjestatud kasvavas järjekorras. Nüüd saab massiivist järgmine:





4 5 60 9

Iteratsioon 3

4 5 60 9

Nagu ka kolmandas iteratsioonis, sobitame kolmanda ja neljanda elemendi, nagu arr[60] ja arr[9].

Nüüd näeme, et arr[60] > arr[9], nii et toimub vahetus, siis sorteeritakse massiiv kasvavas järjekorras.



4 5 9 60

Nii töötab sisestussortimine C-s, mis sorteerib massiivi elemendid hõlpsalt kasvavas või kahanevas järjekorras.

Sisestuse sortimise vooskeem

Järgmine on sisestamise sortimise algoritmi vooskeem:

Sisestuse sortimise rakendusnäide C-s

Esmalt vajame C-s sisestuse sortimise meetodi loomiseks elementide kogu, mida tuleb sortida kahanevas ja kasvavas järjekorras. Oletagem, et selle näite puhul on tegemist arvude massiiviga. {5, 4, 60, 9} :

#include

tühine insertionsort_ascending ( int arr1 [ ] , int n ) {

int i , j , minu_võti ;

//silmust kasutatakse i väärtuste itereerimiseks vahemikus 1 kuni i

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

minu_võti = arr1 [ i ] ;

j = i - 1 ;

samas ( j >= 0 && arr1 [ j ] > minu_võti ) {

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

j = j - 1 ;

}

arr1 [ j + 1 ] = minu_võti ;

}

}

tühine insertionsort_descending ( int arr2 [ ] , int m ) {

int i , j , minu_võti ;

//teine ​​for loop luuakse i väärtuste itereerimiseks vahemikus 1 kuni i

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

minu_võti = arr2 [ i ] ;

j = i - 1 ;

samas ( j >= 0 && arr2 [ j ] < minu_võti ) {

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

j = j - 1 ;

}

arr2 [ j + 1 ] = minu_võti ;

}

}

int peamine ( ) {

//Sisestamine-Sortimine kahanevas järjekorras

int minu_arr [ ] = { 5 , 4 , 60 , 9 } ; //initsialiseeri minu_arr[], millel on neli väärtust

int m = suurus ( minu_arr ) / suurus ( minu_arr [ 0 ] ) ;

insertionsort_descending ( minu_arr , m ) ;

printf ( 'Sorditud massiiv kahanevas järjekorras: ' ) ;

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

printf ( '%d' , minu_arr [ i ] ) ;

printf ( ' \n ' ) ;

//Sisestamine-Sortimine kasvavas järjekorras

int n = suurus ( minu_arr ) / suurus ( minu_arr [ 0 ] ) ;

insertionsort_ascending ( arr2 , n ) ;

printf ( 'Sorditud massiiv kasvavas järjekorras: ' ) ;

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

printf ( '%d' , minu_arr [ i ] ) ;

printf ( ' \n ' ) ;

tagasi 0 ;

}

Selles koodis on kaks meetodit insertionsort_descending() , ja insertionsort_ascending() võta massiivi väärtused minu_arr[] . Seejärel kasutab kood a silmuse jaoks massiivi elementide kordamiseks.

Me kutsume põhifunktsioonis mõlemat funktsiooni, kui nad on sorteerinud massiivid kahanevas ja kasvavas järjekorras. Pärast seda kasutatakse sorditud massiivi printimiseks silmust for.

Selle programmi käivitamisel paigutatakse oodatav väljund allpool:

Järeldus

Sisestussortimine on kiire ja lihtne viis massiivi sortimiseks kas kahanevas või kasvavas järjestuses. Väikeste andmekogumite puhul toimib see sortimistehnika hästi. Nagu näete ülaltoodud juhendist, on lihtne rakendada C-programmi näidet, et hõlpsasti mõista sisestamise sortimist nii kahanevas kui ka kasvavas järjekorras.