Kako uvesti sortiranje spajanja v jeziku C ++ s primeri



V tem članku boste našli podrobno in celovito znanje o združevanju razvrščanja v jeziku C ++, kako deluje s primeri.

Kaj je vrsta spajanja? Merge sort je algoritem za razvrščanje na osnovi primerjave, ki spada v kategorijo deli in osvoji. Razvrščanje z združevanjem se uporablja za razvrščanje matrike, ki temelji na strategiji deli in vladaj, ki bo na kratko zajeta v tem prispevku, skupaj z drugimi koncepti, kot je algoritem s primerom. Ogledali si bomo tudi časovno zapletenost vrste spajanja v jeziku C ++

V tem članku bodo zajeti naslednji napotki:





Nadaljujemo s tem člankom o združevanju razvrščanja v jeziku C ++

Divide and Conquer algoritem

Če že poznate delovanje hitrega sortiranja, se boste morda zavedali strategije ločitve in osvajanja. Divide and Conquer vključuje tri glavne korake. Za razumevanje teh korakov razmislimo o matriki Hello [], ki ima začetni indeks 'a' in končni indeks 'n', zato lahko svojo matriko zapišemo na naslednji način Hello [a & hellip..n]



Divide - Najpomembnejši korak ali glavni korak deliti in osvojiti je razdelitev danega problema na podprobleme ali poddelove. Ulov je v tem, da bi morali biti podproblemi podobni prvotnemu problemu in manjši. V našem primeru bomo svojo matriko razdelili na 2 polovici [a & hellip.m] [m + 1 & hellip..n] m leži sredi indeksa a in n

Conquer - Ko končamo, delimo svoj problem na podprobleme. Te podprobleme rešujemo rekurzivno.

Združitev - V tem koraku na ustrezen način združimo vse rešitve naših podproblemov. Z drugimi besedami, združimo 2 različna razvrščena polja, da tvorimo eno razvrščeno polje. Tam imamo razvrščeno matriko.



Nadaljujemo s tem člankom o združevanju razvrščanja v jeziku C ++

Razumevanje algoritma sortiranja spajanja s primerom

Na tej točki vemo, kakšen pristop bo uporabil način združevanja. Poglejmo si primer in pojdimo skozi vsak korak od Hello [], ki ni razvrščen, do razvrščenega polja.
Primer - Pozdravljeni [10, 3, 7, 1, 15, 14, 9, 22]

Merge-sort-in-C++

Na zgornji sliki smo upoštevali nesortirano matriko in uporabili sortiranje združevanja, da smo dobili razvrščeno matriko. Zdaj pa si oglejmo vsak korak in razumemo celoten algoritem

1. Najprej smo upoštevali matriko Hello [10, 3, 7, 1, 15, 14, 9, 22] v tej matriki je skupno 8 elementov

2. Kot smo že videli, združevanje uporablja za razvrščanje elementov pristop razdeli in osvoji. Našli smo m, ki leži na sredini naše matrike, in jo razdelili od sredine, kjer je m = (a - n) / 2 'a' indeks skrajnega levega elementa in n indeks skrajno desnega elementa našega polja .

3. Po prvi delitvi imamo 2 dela, sestavljena iz po 4 elementov. Poglejmo prvi polčas [10, 3, 7, 1].

4. [10, 3, 7, 1] delimo na 2 dela [10, 3] in [7, 1]. Nato jih še razdelimo na [10], [3], [7], [1]. Nadaljnja delitev ni mogoča, saj ne moremo izračunati m. seznam, ki vsebuje en sam element, se vedno šteje za razvrščenega.

5. Kako poteka združitev? Pa ugotovimo. Najprej [10] in [3] primerjamo in združimo v naraščajočem vrstnem redu [3, 10] na enak način kot dobimo [1, 7]

6. Po tem primerjamo [3, 10] in [1, 7]. Ko jih primerjamo, jih združimo v naraščajočem vrstnem redu in dobimo [1, 3, 7, 10].

7. [15, 14, 9, 2] je prav tako razdeljen in združen na podoben način, da nastane [9, 14, 15, 22].

8. V zadnjem koraku primerjamo in kombiniramo [15, 14, 9, 2] [9, 14, 15, 22], da dobimo razvrščeno matrikotj. [1, 3, 7, 9, 10, 14, 15, 22].

Nadaljujemo s tem člankom o združevanju razvrščanja v jeziku C ++

Psevkodo za sortiranje spajanja

Začnite, če zapustite

Funkcija mergeSort () se rekurzivno pokliče, da deli našo matriko, dokler ne postane en sam element in se funkcija merge () uporablja za spajanje razvrščenih nizov.

Nadaljujemo s tem člankom o združevanju razvrščanja v jeziku C ++

Združi program za razvrščanje v jeziku C ++

#include #include #include z uporabo imenskega prostora std void merge (int a [], int Firstindex, int m, int Lastindex) // združi podnize, ki so ustvarjeni med razdelitvijo void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexsize int Pozdravljeni [velikost], i cout<<'Enter the elements of the array one by one:n' for(i=0 i>Pozdravljeni [i] mergeSort (Pozdravljeni, 0, velikost - 1) cout<<'The Sorted List isn' for(i=0 i

Izhod-

Nadaljujemo s tem člankom o združevanju razvrščanja v jeziku C ++

Časovna zapletenost

Zapletenost časa je pomemben vidik, ki ga je treba upoštevati, ko govorimo o algoritmih. Šteje se, da ima razvrščanje združevanja časovno zapletenost v primerjavi z drugimi algoritmi za razvrščanje.

Čas delovanja v najslabšem primeru - O (n log n)
Najboljši čas delovanja - O (n log n)
Povprečni čas delovanja - O (n log n)

java scanner dobil naslednji char -

S tem smo prišli do konca tega članka Združi razvrščanje v jeziku C ++. Če želite izvedeti več, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je zasnovan tako, da vas usposobi za temeljne in napredne koncepte Java, skupaj z različnimi Java okviri, kot sta Hibernate & Spring.

Imate vprašanje za nas? Prosimo, navedite to v oddelku za komentarje tega spletnega dnevnika, mi se vam bomo oglasili v najkrajšem možnem času.