Kako implementirati sortiranje spajanja u C ++ s primjerima



Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje o spajanju sortiranja u jeziku C ++, kako to radi s primjerima.

Što je vrsta spajanja? Spajanje sortiranje algoritam je sortiranja zasnovan na usporedbi koji pripada kategoriji podijeli i osvoji. Spajanje sortiranjem koristi se za sortiranje niza temeljenog na strategiji podijeli i osvoji, koja će ukratko biti obrađena u ovom postu, zajedno s drugim konceptima, kao što je algoritam s primjerom. Također ćemo pogledati vremensku složenost sortiranja stapanja u C ++

U ovom će članku biti obrađeni sljedeći smjerovi,





Nastavljamo s ovim člankom o Spajanju sortiranja u C ++

Podijeli i osvoji algoritam

Ako ste već upoznati s načinom rada brzog sortiranja, možda ćete biti svjesni strategije podijeli i osvoji. Podijeli i pobjedi uključuje tri glavna koraka. Da bismo razumjeli ove korake, razmotrimo niz Hello [] koji ima početni indeks 'a' i završni indeks 'n', stoga svoj niz možemo napisati na sljedeći način Hello [a & hellip..n]



Podijeli - Glavni potez ili osnovni korak podijeli i osvoji je podijeliti zadani problem na pod-probleme ili pod-dijelove. Kvar je ovdje u tome što bi podproblemi trebali biti slični izvornom problemu i manje veličine. U našem slučaju podijelit ćemo svoj niz u 2 polovice [a & hellip.m] [m + 1 & hellip..n] m leži u sredini indeksa a i n

Osvojiti - Kad završimo s dijeljenjem svog problema na pod-probleme. Te podprobleme rješavamo rekurzivno.

kako izaći u javi

Kombiniraj - U ovom koraku kombiniramo sva rješenja naših pod-problema na odgovarajući način. Drugim riječima, kombiniramo 2 različita sortirana niza da bismo stvorili jedan sortirani niz. Tu je naš sortirani niz.



Nastavljamo s ovim člankom o Spajanju sortiranja u C ++

Razumijevanje algoritma sortiranja stapanja na primjeru

U ovom trenutku znamo koji će pristup koristiti sortiranje spajanja. Dakle, razmotrimo primjer i prođite kroz svaki korak od Hello [] nerazvrstanog do sortiranog niza.
Primjer- Pozdrav [10, 3, 7, 1, 15, 14, 9, 22]

Merge-sort-in-C++

Na gornjoj slici razmotrili smo nerazvrstani niz i upotrijebili sortiranje spajanjem da bismo dobili sortirani niz. Pogledajmo sada svaki korak i shvatimo cijeli algoritam

1. Prvo smo razmotrili niz Hello [10, 3, 7, 1, 15, 14, 9, 22] u ovom nizu ima ukupno 8 elemenata

2. Kao što smo ranije vidjeli, spajanje sortiranja koristi pristup podijeli i osvoji za sortiranje elemenata. Pronašli smo m koji leži u sredini našeg niza i podijelili smo naš niz od sredine gdje je m = (a - n) / 2 'a' indeks krajnjeg lijevog elementa, a n indeks krajnjeg desnog elementa našeg niza .

3. Nakon prve podjele imamo 2 dijela koji se sastoje od po 4 elementa. Pogledajmo prvo poluvrijeme [10, 3, 7, 1].

4. Podijelimo [10, 3, 7, 1] u 2 dijela [10, 3] i [7, 1]. Nakon toga dijelimo ih dalje na [10], [3], [7], [1]. Daljnja podjela nije moguća jer ne možemo izračunati m. popis koji sadrži jedan element uvijek se smatra sortiranim.

5. Kako se odvija spajanje? Hajde da vidimo. Prvo se [10] i [3] uspoređuju i spajaju uzlaznim redoslijedom [3, 10] na isti način na koji dobivamo [1, 7]

6. Nakon toga uspoređujemo [3, 10] i [1, 7]. Jednom kada ih usporedimo, spajamo ih uzlaznim redoslijedom i dobivamo [1, 3, 7, 10].

7. [15, 14, 9, 2] je također podijeljen i kombiniran na sličan način kako bi nastao [9, 14, 15, 22].

kako deklarirati varijablu instance u javi

8. U posljednjem koraku uspoređujemo i kombiniramo [15, 14, 9, 2] [9, 14, 15, 22] kako bismo dobili svoj razvrstani niztj. [1, 3, 7, 9, 10, 14, 15, 22].

Nastavljamo s ovim člankom o Spajanju sortiranja u C ++

Pseudokod za sortiranje stapanja

Počnite ako ostanete

Funkcija mergeSort () rekurzivno se poziva da dijeli naš niz dok ne postane jedan element i dok se funkcija merge () koristi za spajanje razvrstanih nizova.

Nastavljamo s ovim člankom o Spajanju sortiranja u C ++

Spoji program za sortiranje u C ++

#include #include #include pomoću prostora imena std void merge (int a [], int Firstindex, int m, int Lastindex) // spaja podnizove koji su stvoreni dok podjela void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexsize int Pozdrav [veličina], cout<<'Enter the elements of the array one by one:n' for(i=0 i>Pozdrav [i] mergeSort (Pozdrav, 0, veličina - 1) cout<<'The Sorted List isn' for(i=0 i

Izlaz-

Nastavljamo s ovim člankom o Spajanju sortiranja u C ++

Složenost vremena

Složenost vremena važan je aspekt koji treba uzeti u obzir kada govorimo o algoritmima. Smatra se da sortiranje stapanja ima veliku vremensku složenost u usporedbi s drugim algoritmima sortiranja.

Vrijeme najgoreg rada - O (n log n)
Najbolje vrijeme rada - O (n log n)
Prosječno vrijeme rada- O (n log n)

Ovime smo došli do kraja ovog članka Spajanje sortiranja u C ++. Ako želite saznati više, pogledajte Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.