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,
- Algorytm dziel i zwyciężaj
- Zrozumienie algorytmu sortowania przez scalanie na przykładzie
- Pseudokod do sortowania przez scalanie
- Program w C ++ do sortowania przez scalanie
- Złożoność czasowa sortowania przez scalanie
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]
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 zostanieszFunkcja 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 javaScal 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.