Jak zaimplementować sortowanie przez scalanie w C ++ z przykładami

W tym artykule znajdziesz szczegółową i wszechstronną wiedzę na temat sortowania przez scalanie w C ++, wraz z przykładami.

Co to jest sortowanie przez scalanie? Sortowanie przez scalanie to oparty na porównaniu algorytm sortowania należący do kategorii dziel i zwyciężaj. Sortowanie przez scalanie służy do sortowania tablicy w oparciu o strategię dziel i rządź, która zostanie pokrótce omówiona w tym poście wraz z innymi koncepcjami, takimi jak algorytm z przykładem. Przyjrzymy się również złożoności czasowej sortowania przez scalanie w C ++



Poniższe wskazówki zostaną omówione w tym artykule,



Przechodząc do tego artykułu o sortowaniu przez scalanie w C ++

Algorytm dziel i zwyciężaj

Jeśli wiesz już, jak działa quicksort, możesz być świadomy strategii dziel i rządź. Divide and Conquer obejmuje trzy główne kroki. Aby zrozumieć te kroki, rozważmy tablicę Hello [] mającą indeks początkowy „a” i końcowy indeks „n”, dlatego możemy zapisać naszą tablicę w następujący sposób: Hello [a & hellip..n]



Dzielenie - głównym posunięciem lub pierwszym krokiem dzielenia i zwyciężania jest podzielenie danego problemu na podproblemy lub części podrzędne. Haczyk polega na tym, że podproblemy powinny być podobne do pierwotnego problemu i mniejsze. W naszym przypadku podzielimy naszą tablicę na 2 połówki [a & hellip.m] [m + 1 & hellip..n] m leży w środku indeksu a i n

Conquer- Kiedy skończymy, dzielimy nasz problem na podproblemy. Rozwiązujemy te podproblemy rekurencyjnie.

jak używać Spyder Python

Połącz - na tym etapie łączymy w odpowiedni sposób wszystkie rozwiązania naszych podproblemów. Innymi słowy, łączymy 2 różne posortowane tablice, aby utworzyć jedną posortowaną tablicę. Tam mamy naszą posortowaną tablicę.



Przechodząc do tego artykułu o sortowaniu przez scalanie w C ++

Zrozumienie algorytmu sortowania przez scalanie na przykładzie

W tym momencie wiemy, jakie podejście zostanie zastosowane podczas sortowania przez scalanie. Rozważmy więc przykład i przejdźmy przez każdy krok od nieposortowanego Hello [] do posortowanej tablicy.
Przykład - cześć [10, 3, 7, 1, 15, 14, 9, 22]

Merge-sort-in-C++

Na powyższym obrazku rozważaliśmy tablicę niesortowaną i używaliśmy sortowania przez scalanie, aby uzyskać posortowaną tablicę. Przyjrzyjmy się teraz każdemu krokowi i zrozummy cały algorytm

1. Najpierw rozważaliśmy tablicę Hello [10, 3, 7, 1, 15, 14, 9, 22] w tej tablicy jest łącznie 8 elementów

2. Jak widzieliśmy wcześniej, sortowanie przez scalanie wykorzystuje podejście dziel i zwyciężaj do sortowania elementów. Znaleźliśmy m, które leży w środku naszej tablicy i podzieliliśmy naszą tablicę od środka, gdzie m = (a - n) / 2 'a' jest indeksem skrajnego lewego elementu, an jest indeksem prawego elementu naszej tablicy .

jaki jest parametr w tabeli

3. Po pierwszym podziale mamy 2 części składające się z 4 elementów każda. Spójrzmy na pierwszą połowę [10, 3, 7, 1].

4. Dzielimy [10, 3, 7, 1] na 2 części [10, 3] i [7, 1]. Następnie dzielimy je dalej na [10], [3], [7], [1]. Dalszy podział nie jest możliwy, ponieważ nie możemy obliczyć m. lista zawierająca pojedynczy element jest zawsze uważana za posortowaną.

5. Jak przebiega łączenie? Dowiedzmy Się. Pierwsze [10] i [3] są porównywane i łączone w porządku rosnącym [3, 10] w ten sam sposób, w jaki otrzymujemy [1, 7]

6. Następnie porównujemy [3, 10] i [1, 7]. Po porównaniu łączymy je w porządku rosnącym i otrzymujemy [1, 3, 7, 10].

7. [15, 14, 9, 2] również dzieli się i łączy w podobny sposób do postaci [9, 14, 15, 22].

8. W ostatnim kroku porównujemy i łączymy [15, 14, 9, 2] [9, 14, 15, 22], aby otrzymać posortowaną tablicętj. [1, 3, 7, 9, 10, 14, 15, 22].

Przechodząc do tego artykułu o sortowaniu przez scalanie w C ++

Pseudokod do sortowania przez scalanie

Rozpocznij, jeśli zostaniesz

Funkcja mergeSort () rekurencyjnie wywołuje samą siebie, aby podzielić naszą tablicę, aż stanie się ona pojedynczym elementem, a funkcja merge () jest używana do scalania posortowanych tablic.

Przechodząc do tego artykułu o sortowaniu przez scalanie w C ++

utwórz tablicę obiektów java

Scal program sortowania w C ++

#include #include #include using namespace std void merge (int a [], int Firstindex, int m, int Lastindex) // scala pod-tablice, które są tworzone podczas dzielenia void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexrozmiar int Witam [rozmiar], cout<<'Enter the elements of the array one by one:n' for(i=0 i>Witaj [i] mergeSort (Hello, 0, size - 1) cout<<'The Sorted List isn' for(i=0 i

Wynik-

Przechodząc do tego artykułu o sortowaniu przez scalanie w C ++

Złożoność czasowa

Złożoność czasowa jest ważnym aspektem, który należy wziąć pod uwagę, gdy mówimy o algorytmach. Uważa się, że sortowanie przez scalanie ma dużą złożoność czasową w porównaniu z innymi algorytmami sortowania.

Czas pracy w najgorszym przypadku - O (n log n)
Czas działania najlepszego przypadku - O (n log n)
Średni czas pracy - O (n log n)

W ten sposób dochodzimy do końca tego artykułu Sortowanie przez scalanie w C ++. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.