Какво представлява сортирането на сливането? Merge sort е базиран на сравнение алгоритъм за сортиране, който принадлежи към категорията разделяне и завладяване. Merge sort се използва за сортиране на масив, базиран на стратегията за разделяне и завладяване, която ще бъде разгледана накратко в тази публикация, заедно с други концепции, като например алгоритъма му. Ще разгледаме и сложността във времето на сортирането на сливане в C ++
Следните указания ще бъдат обхванати в тази статия,
- Разделяй и владей Алгоритъм
- Разбиране на алгоритъма за сортиране на обединяване с пример
- Псевдокод за Сливане на сортиране
- Програма в 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 -
В горното изображение разгледахме несортиран масив и използвахме сортиране на сливане, за да получим сортиран масив. Сега, нека да разгледаме всяка стъпка и да разберем целия алгоритъм
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.
Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.