Jak implementovat sloučení řazení v C ++ s příklady



Tento článek vám poskytne podrobné a komplexní znalosti o sloučení řazení v C ++, jak to funguje s příklady.

Co je druh sloučení? Sloučit řazení je srovnávací algoritmus řazení, který patří do kategorie rozděl a panuj. Sloučit sloučení se používá k řazení pole založeného na strategii rozděl a panuj, která bude krátce popsána v tomto příspěvku spolu s dalšími koncepty, jako je jeho algoritmus s příkladem. Podíváme se také na časovou složitost sloučení v C ++

V tomto článku se budeme zabývat následujícími ukazateli,





Pokračujeme tímto článkem o sloučení řazení v C ++

Algoritmus Divide and Conquer

Pokud již víte, jak funguje quicksort, můžete si být vědomi strategie rozděl a panuj. Divide and Conquer zahrnuje tři hlavní kroky. Pro pochopení těchto kroků uvažujme pole Hello [] s počátečním indexem ‚a 'a končícím indexem‚ n ‘, proto můžeme naše pole napsat následujícím způsobem Hello [a & hellip..n]



Rozdělit - Prvotním krokem nebo hlavním krokem rozdělení a dobývání je rozdělení daného problému na dílčí problémy nebo dílčí části. Háček je v tom, že dílčí problémy by měly být podobné původnímu problému a menší velikosti. V našem případě rozdělíme naše pole na 2 poloviny [a & hellip.m] [m + 1 & hellip..n] m leží uprostřed indexu a n

Dobýt - Jakmile jsme hotoví, rozdělíme náš problém na dílčí problémy. Tyto subproblémy řešíme rekurzivně.

Kombinovat - V tomto kroku vhodným způsobem kombinujeme všechna řešení našich dílčích problémů. Jinými slovy kombinujeme 2 různá seřazená pole a vytváříme jedno seřazené pole. Tam máme seřazené pole.



Pokračujeme tímto článkem o sloučení řazení v C ++

Porozumění algoritmu sloučení řazení s příkladem

V tomto okamžiku víme, jaký přístup použije druh sloučení. Podívejme se tedy na příklad a projdeme každý krok od Hello [] netříděného po tříděné pole.
Příklad - Dobrý den [10, 3, 7, 1, 15, 14, 9, 22]

jak na to v Javě

Merge-sort-in-C++

Na výše uvedeném obrázku jsme uvažovali o netříděném poli a k ​​získání seřazeného pole jsme použili sloučení. Pojďme se nyní podívat na každý krok a pochopit celý algoritmus

1. Nejprve jsme považovali pole Hello [10, 3, 7, 1, 15, 14, 9, 22] v tomto poli je celkem 8 prvků

2. Jak jsme viděli dříve, sloučení používá k rozdělení prvků přístup rozděl a panuj. Našli jsme m, které leží uprostřed našeho pole a rozdělili jsme naše pole od středu, kde m = (a - n) / 2 'a' je index prvku nalevo a n je index prvku napravo z našeho pole .

3. Po prvním dělení máme 2 části skládající se ze 4 prvků. Podívejme se na první polovinu [10, 3, 7, 1].

4. Rozdělíme [10, 3, 7, 1] na 2 části [10, 3] a [7, 1]. Poté je rozdělíme dále na [10], [3], [7], [1]. Další dělení není možné, protože nemůžeme vypočítat m. seznam obsahující jeden prvek je vždy považován za seřazený.

5. Jak probíhá sloučení? Pojďme to zjistit. Nejprve [10] a [3] jsou porovnány a sloučeny ve vzestupném pořadí [3, 10] stejným způsobem, jako dostaneme [1, 7]

sloučit třídit zdrojový kód c ++

6. Poté porovnáme [3, 10] a [1, 7]. Po srovnání je sloučíme vzestupně a dostaneme [1, 3, 7, 10].

7. [15, 14, 9, 2] je také rozdělen a kombinován podobným způsobem do formy [9, 14, 15, 22].

8. V posledním kroku porovnáme a zkombinujeme [15, 14, 9, 2] [9, 14, 15, 22] a získáme naše seřazené poletj. [1, 3, 7, 9, 10, 14, 15, 22].

rozdíl mezi třídou a rozhraním

Pokračujeme tímto článkem o sloučení řazení v C ++

Pseudokód pro sloučení řazení

Začněte, pokud zůstane

Funkce mergeSort () se rekurzivně volá k rozdělení našeho pole, dokud se nestane jediným prvkem a funkce merge () se použije ke sloučení seřazených polí.

Pokračujeme tímto článkem o sloučení řazení v C ++

Sloučit třídicí program v C ++

#include #include #include using namespace std void merge (int a [], int Firstindex, int m, int Lastindex) // merges the sub-arrays which are created while division void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexsize int Dobrý den [size], já cout<<'Enter the elements of the array one by one:n' for(i=0 i>Hello [i] mergeSort (Hello, 0, size - 1) cout<<'The Sorted List isn' for(i=0 i

Výstup-

Pokračujeme tímto článkem o sloučení řazení v C ++

Časová složitost

Když hovoříme o algoritmech, je důležitým aspektem časová složitost. Sloučení sloučení je považováno za velmi složité v porovnání s jinými algoritmy řazení.

Nejhorší doba chodu - O (n log n)
Nejlepší doba provozu případu - O (n log n)
Průměrná doba chodu - O (n log n)

S tímto se dostáváme na konec tohoto článku Sloučit řazení v C ++. Pokud se chcete dozvědět více, podívejte se na Edureka, důvěryhodná online vzdělávací společnost. Školicí a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java spolu s různými rámci Java, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.