Kaip įgyvendinti suliejimo rūšiavimą C ++ su pavyzdžiais



Šis straipsnis suteiks jums išsamių ir išsamių žinių apie suliejimo rūšiavimą C ++, kaip tai veikia su pavyzdžiais.

Kas yra sujungimo rūšis? „Merge sort“ yra palyginimu pagrįstas rūšiavimo algoritmas, priklausantis dalijimo ir užkariavimo kategorijai. Sujungti rūšiavimas naudojamas masyvui rūšiuoti pagal padalijimo ir užkariavimo strategiją, kuri bus trumpai aptarta šiame įraše kartu su kitomis sąvokomis, tokiomis kaip jos algoritmas su pavyzdžiu. Taip pat apžvelgsime sujungimo rūšiavimo sudėtingumą C ++ laiko atžvilgiu

Tolimesni patarimai bus aptarti šiame straipsnyje,





Toliau einant su šiuo straipsniu apie „Sulieti rūšiavimą C ++“

Skaldykite ir užkariaukite algoritmą

Jei jau esate susipažinę su „quicksort“ veikimu, galite žinoti apie skaldymo ir užkariavimo strategiją. Skaldykite ir užkariaukite tris pagrindinius žingsnius. Norėdami suprasti šiuos veiksmus, apsvarstykime masyvą „Hello“], turintį pradinį indeksą „a“ ir baigiantį indeksą „n“, taigi mes galime parašyti savo masyvą taip: Sveiki



Skaldyti - pagrindinis žingsnis arba pagrindinis padalijimo ir užkariavimo žingsnis yra padalinti pateiktą problemą į subproblemas arba jos dalis. Čia atkreipiamas dėmesys į tai, kad papildomos problemos turėtų būti panašios į pradinę problemą ir mažesnio dydžio. Mūsų atveju mes padalinsime savo masyvą į dvi puses [a & hellip.m] [m + 1 & hellip..n] m yra viduryje a ir n indekso

Užkariaukite - kai baigsime savo problemą padalinti į sub-problemas. Šiuos papročių klausimus sprendžiame rekursiškai.

atvirkštinis skaičius java

Sujungti - šiame etape mes deriname visus savo sub-problemų sprendimus tinkamu būdu. Kitaip tariant, mes sujungiame 2 skirtingus masyvus, kad suformuotume vieną rūšiuojamą masyvą. Čia mes turime savo išrūšiuotą masyvą.



Toliau einant su šiuo straipsniu apie „Sulieti rūšiavimą C ++“

Sujungimo rūšiavimo algoritmo supratimas su pavyzdžiu

Šiuo metu mes žinome, kokį metodą naudos suliejimo rūšis. Taigi, apsvarstykime pavyzdį ir pereikime kiekvieną žingsnį nuo „Hello“ [] nesurūšiuoto iki surūšiuoto masyvo.
Pavyzdys - Sveiki [10, 3, 7, 1, 15, 14, 9, 22]

Merge-sort-in-C++

Ankstesniame paveikslėlyje mes laikėme nerūšiuotą masyvą ir naudojome suliejimo rūšiavimą, kad gautume surūšiuotą masyvą. Pažvelkime į kiekvieną žingsnį ir supraskime visą algoritmą

1. Pirma, mes apsvarstėme masyvą Sveiki [10, 3, 7, 1, 15, 14, 9, 22] šiame masyve yra iš viso 8 elementai

2. Kaip matėme anksčiau, suliejimo rūšiavimas naudoja skirstymo ir užkariavimo metodą elementams rūšiuoti. Mes radome m, kuris yra mūsų masyvo viduryje, ir padalijome savo masyvą iš vidurio, kur m = (a - n) / 2 'a' yra kairiausio elemento indeksas, o n yra dešiniojo mūsų masyvo elemento indeksas .

hashmap diegimas Java kode

3. Po pirmojo padalijimo turime 2 dalis, susidedančias iš 4 elementų. Pažvelkime į pirmąją pusę [10, 3, 7, 1].

4. Skirstome [10, 3, 7, 1] į 2 dalis [10, 3] ir [7, 1]. Po to juos dar skirstome į [10], [3], [7], [1]. Tolesnis skirstymas neįmanomas, nes negalime apskaičiuoti m. sąrašas, kuriame yra vienas elementas, visada laikomas išrūšiuotu.

5. Kaip vyksta susijungimas? Išsiaiškinkime. Pirmiausia [10] ir [3] yra lyginami ir sujungiami didėjimo tvarka [3, 10] tokiu pačiu būdu, kaip gauname [1, 7]

6. Po to mes palyginame [3, 10] ir [1, 7]. Palyginę, sujungiame juos didėjimo tvarka ir gauname [1, 3, 7, 10].

7. [15, 14, 9, 2] taip pat yra padalijami ir sujungiami panašiai, kad sudarytų [9, 14, 15, 22].

8. Paskutiniame etape mes palyginame ir sujungiame [15, 14, 9, 2] [9, 14, 15, 22], kad gautume mūsų surūšiuotą masyvąy. [1, 3, 7, 9, 10, 14, 15, 22].

Toliau einant su šiuo straipsniu apie „Sulieti rūšiavimą C ++“

Susijungimo rūšiavimo pseudokodas

Pradėk, jei liksi

Funkcija „MergeSort“ () rekursyviai vadinasi padalinti mūsų masyvą, kol jis taps vienu elementu, o funkcija sulieti () naudojama surūšiuotiems masyvams sujungti.

Toliau einant su šiuo straipsniu apie „Sulieti rūšiavimą C ++“

sąsajos ir klasės skirtumas

Sujungti rūšiavimo programą C ++

#include #include #include naudojant vardų sritį standartinis negaliojantis suliejimas (int a [], int Firstindex, int m, int Lastindex) // sujungia submasyvus, kurie yra sukurti, o divizionas negalioja sulietiSort (int a [], int Firstindex, int Lastindex) {if (Firstindexdydis int Sveiki [dydis], i cout<<'Enter the elements of the array one by one:n' for(i=0 i>Sveiki [i] mergeSort (Hello, 0, size - 1) cout<<'The Sorted List isn' for(i=0 i

Išvestis

Toliau einant su šiuo straipsniu apie „Sulieti rūšiavimą C ++“

Laiko kompleksiškumas

Laiko sudėtingumas yra svarbus aspektas, į kurį reikia atsižvelgti, kai kalbame apie algoritmus. Laikoma, kad sujungimo rūšiavimas yra labai sudėtingas, palyginti su kitais rūšiavimo algoritmais.

Blogiausiu atveju veikimo laikas - O (n log n)
Geriausias atvejis - O (n log n)
Vidutinis važiavimo laikas - O (n log n)

Tuo mes baigėme šį suliejimo rūšiavimą C ++ straipsnyje. Jei norite sužinoti daugiau, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai yra skirti mokyti jus tiek pagrindinėms, tiek pažangesnėms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio komentarų skiltyje ir mes kuo greičiau susisieksime su jumis.