Š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,
- Podijeli i osvoji algoritam
- Razumijevanje algoritma sortiranja spajanja na primjeru
- Pseudokod za sortiranje stapanja
- Program na C ++-u za spajanje sortiranja
- Složenost vremena za spajanje sortiranja
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]
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 ostaneteFunkcija 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.