Как да приложим Сливане на обединяване в C ++ с примери



Тази статия ще ви предостави подробни и изчерпателни познания за Сливане на сортиране в C ++, как работи с примери.

Какво представлява сортирането на сливането? Merge sort е базиран на сравнение алгоритъм за сортиране, който принадлежи към категорията разделяне и завладяване. Merge sort се използва за сортиране на масив, базиран на стратегията за разделяне и завладяване, която ще бъде разгледана накратко в тази публикация, заедно с други концепции, като например алгоритъма му. Ще разгледаме и сложността във времето на сортирането на сливане в C ++

Следните указания ще бъдат обхванати в тази статия,





Продължавайки с тази статия за Merge Sort в C ++

Алгоритъм за разделяне и завладяване

Ако вече сте запознати с това как работи бързата сортировка, може да сте наясно със стратегията за разделяне и завладяване. Разделяй и владей включва три основни стъпки. За да разберем тези стъпки, нека разгледаме масив Hello [], който има начален индекс ‘a’ и завършващ индекс ‘n’, следователно можем да напишем нашия масив по следния начин Hello [a & hellip..n]



Разделяне - Основният ход или основната стъпка на разделяй и владей е да разделиш зададения проблем на подзадачи или подчасти. Уловката тук е, че подпроблемите трябва да бъдат подобни на първоначалния проблем и по-малки по размер. В нашия случай ще разделим нашия масив на 2 половини [a & hellip.m] [m + 1 & hellip..n] m се намира в средата на индекса a и n

Conquer - След като приключим, разделяме проблема си на подпроблеми. Ние решаваме тези подпроблеми рекурсивно.

Комбиниране - В тази стъпка ние комбинираме всички решения на нашите подпроблеми по подходящ начин. С други думи, ние комбинираме 2 различни сортирани масива, за да образуваме един сортиран масив. Там имаме нашия сортиран масив.



Продължавайки с тази статия за Merge Sort в C ++

Разбиране на алгоритъма за сортиране на обединяване с пример

На този етап знаем какъв подход ще бъде използван от сортирането на сливане. Така че, нека да разгледаме пример и да преминем през всяка стъпка от Hello [] несортиран до сортиран масив.
Пример - Здравейте [10, 3, 7, 1, 15, 14, 9, 22]

как да използвам скенера в java -

Merge-sort-in-C++

В горното изображение разгледахме несортиран масив и използвахме сортиране на сливане, за да получим сортиран масив. Сега, нека да разгледаме всяка стъпка и да разберем целия алгоритъм

1. Първо, разгледахме масив Hello [10, 3, 7, 1, 15, 14, 9, 22] в този масив има общо 8 елемента

2. Както видяхме по-рано, за сортиране на елементите сортирането използва метод разделяй и владей. Намерихме m, което се намира в средата на нашия масив и разделихме нашия масив от средата, където m = (a - n) / 2 'a' е индексът на най-левия елемент и n е индексът на най-десния елемент на нашия масив .

3. След първото разделяне имаме 2 части, състоящи се от по 4 елемента. Нека да разгледаме първото полувреме [10, 3, 7, 1].

4. Разделяме [10, 3, 7, 1] на 2 части [10, 3] и [7, 1]. След това ги разделяме допълнително на [10], [3], [7], [1]. По-нататъшно разделяне не е възможно, тъй като не можем да изчислим m. списък, съдържащ един елемент, винаги се счита за сортиран.

5. Как става сливането? Нека разберем. Първо [10] и [3] се сравняват и обединяват във възходящ ред [3, 10] по същия начин, по който получаваме [1, 7]

какво е hashset в java

6. След това сравняваме [3, 10] и [1, 7]. Веднъж сравнени ги обединяваме във възходящ ред и получаваме [1, 3, 7, 10].

7. [15, 14, 9, 2] също се разделя и комбинира по подобен начин, за да се образува [9, 14, 15, 22].

8. В последната стъпка сравняваме и комбинираме [15, 14, 9, 2] [9, 14, 15, 22], за да ни даде нашия сортиран масивi.e [1, 3, 7, 9, 10, 14, 15, 22].

инсталирайте php на Windows 10

Продължавайки с тази статия за Merge Sort в C ++

Псевдокод за Сливане на сортиране

Започнете, ако сте останали

Функцията mergeSort () рекурсивно се извиква да разделя нашия масив, докато стане един елемент и функцията merge () се използва за обединяване на сортираните масиви.

Продължавайки с тази статия за Merge Sort в C ++

Обединете програмата за сортиране в C ++

#include #include #include с използване на пространство от имена std void merge (int a [], int Firstindex, int m, int Lastindex) // обединява подмасивите, които са създадени при разделяне void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexsize int Здравейте [размер], i cout<<'Enter the elements of the array one by one:n' for(i=0 i>Здравей [i] mergeSort (Здравей, 0, размер - 1) cout<<'The Sorted List isn' for(i=0 i

Изход -

Продължавайки с тази статия за Merge Sort в C ++

Сложност във времето

Сложността на времето е важен аспект, който трябва да се има предвид, когато говорим за алгоритми. Счита се, че сортирането на обединения има голяма сложност във времето в сравнение с други алгоритми за сортиране.

Време за работа в най-лошия случай - O (n log n)
Най-доброто време за работа - O (n log n)
Средно време на работа - O (n log n)

С това стигнахме до края на тази статия за Сливане на обединяване в C ++. Ако искате да научите повече, разгледайте от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.