Scal algorytm sortowania za pomocą Pythona

Scal algorytm sortowania za pomocą Pythona
W tym artykule dowiemy się o algorytmie sortowania scalania. SORGE SORT to popularna metoda sortowania podziału. Sortowanie jest szeroko stosowane ze względu na jego prędkość w sortowaniu danych. Jest to jedna z lepszych ilustracji, jak podzielić i pokonać algorytmy, które mogą być używane w praktyce. Scal sort oddziela listę danych na dwie połówki, a następnie wywołuje te podczęści, aby podzielić je dalej na dwie połówki. Powtarza operację, dopóki każdy komponent listy nie będzie miał tylko jednego elementu. Sortując te podczęści jednego elementu na dwa komponenty, później połączy je razem. Po sortowaniu podsekcja dwumiejska zostanie powiązana z pozostałymi dwoma komponentami. Ta procedura jest powtarzana do momentu uzyskania ostatecznej sortowanej listy elementów poprzez wielokrotne wywołanie funkcji.

Podstawowa ilustracja sortowania scalania podano w poniższym przykładzie:

Kod Python: Poniższy kod Python dotyczy algorytmu sortowania scalania:

def merge_sort (UnsortedList):
Jeśli Len (UnsortedList)> 1:
mid = len (unsortedList) // 2
leftlist = UnsortedList [: Mid]
Prawe list = UnsortedList [MID:]
# Recursive Call, gdy przejdziemy do dwóch list (po lewej i prawej) do sortowania
merge_sort (lewy lista)
merge_sort (prawy lista)
# Ponieważ mamy dwie listy, więc musimy iteratorami do iteracji każdej listy
M = 0
n = 0
# Potrzebujemy jednego wspólnego iteratora, który itera do głównej listy
Z = 0
podczas gdy m < len(leftList) and n < len(rightList):
Jeśli leftlist [m] <= rightList[n]:
# Tutaj używamy pierwszych elementów po lewej stronie
UnsortedList [z] = leftlist [m]
# Zwiększ główny iterator
M += 1
w przeciwnym razie:
UnsortedList [z] = prawy lista [n]
n += 1
Z += 1
# Jeśli wartości pozostają na liście, przetwarzamy tutaj
podczas gdy m < len(leftList):
UnsortedList [z] = leftlist [m]
M += 1
Z += 1
podczas gdy n < len(rightList):
UnsortedList [z] = prawy lista [n]
n += 1
Z += 1
UnsortedList = [23,56,0,23,85,100,200,12,32,78,90,102]
merge_sort (UnsortedList)
Drukuj (UnsortedList)

Wyjście:

[0, 12, 23, 23, 32, 56, 78, 85, 90, 100, 102, 200]

Jest to rekurencyjny sposób scalania sortowania. Oto następujące kroki w celu uzyskania posortowanej tablicy za pomocą tej metody:

  • Linia 1: Definiujemy funkcję (merge_sort), gdy musimy sortować listę nieprojektowanych elementów. Teraz wyjaśnimy wszystkie wiersze tej funkcji Merge_Sort.
  • Linia 2-5: Pierwszą rzeczą, którą sprawdzamy, jest to, czy niepohamowane elementy listy mają więcej niż 1 element, czy nie. Jeśli istnieje tylko jeden element, nie ma potrzeby sortowania. Tak więc sprawdzamy ten pierwszy warunek.

    Jeśli elementy są więcej niż 1, staramy się uzyskać medianę wartości listy, aby podzielić całą listę na dwie części (po lewej i prawej) w celu dalszego wywołania rekurencyjnego. Każde wywołanie rekurencyjne dzieli listę na lewą i prawą, aż do uzyskania dwóch sąsiednich wpisów.

  • Linia 8-9: Nazywamy sortowanie scalania rekurencyjnie dla każdego Syblist (po lewej i prawej).
  • Linia 11-15: Rozpoczyna się procedura sortowania. Każdy wywołuje dwie części, które są przemierzone przez iteratory M i N. Iterator Z iterator iterator na wszystkich listach, dokonując modyfikacji.
  • Linia 17-26: LEWLISTA [M] jest przydzielana do gniazda nieporadowanego [z], a M jest zwiększana, jeśli wartość w m jest mniejsza niż wartość w n. Jeśli nie, wybierana jest prawy lista [n]. Wszystkie wartości przypisane do Z są sortowane.
  • Linia 29-37: Pod koniec tej pętli jedna z części mogła nie zostać całkowicie skrzyżowana. Jego zawartość jest przypisywana do pozostałych pozycji na liście.

Złożoność czasu:

Złożoność czasu sumowania zależy od dwóch czynników:

  • Współczynnik podziału listy, który przyjmuje log (n)
  • Drugi czynnik łączy dwie listy, które zajmuje czas liniowy, więc jej złożoność wynosi O (N)

Zatem całkowita złożoność opiera się na poprzednich dwóch czynnikach sortowania scalania wynosi O (n.logn).

Zalety algorytmu sortowania scalania:

  • Scalanie sortowanie ułatwia sortowanie zestawów dużych danych.
  • Scalanie może uzyskać dostęp do danych w kolejności, dlatego dostępny dostęp nie jest wymagany.
  • Scalanie to niezawodna metoda sortowania.

Wady algorytmu sortowania scalania:

  • Sort scalania wymaga tablicy o podobnej wielkości, aby sortować listę, co jest wadą użycia pamięci.
  • Podczas sortowania mniejszych zestawów danych trwa dłużej.

Wniosek:

Sortowanie jest szybką i wszechstronną metodą sortowania. Jego kluczową korzyścią jest spójny czas wykonywania algorytmu i wydajność podczas sortowania dużych tablic. W porównaniu z szybkim sortym, nie opiera się to na żadnych błędnych osądach, które powodują długie czasy. Sort scalania jest najlepszym algorytmem do sortowania elementów. Jednak główną wadą sortowania jest to, że wykorzystuje dużo pamięci przed połączeniem elementów. Jest to również bardzo przydatne w przyszłości inżynierii oprogramowania, gdzie mogą budować więcej algorytmów sortowania w oparciu o metodę podziału i koniunktury.

Widzieliśmy standardowy przykład sumienia bez kodowania, aby zrozumieć, jak działa ta analogia, a następnie zaimplementowaliśmy podobne kroki w programowaniu Python. Teraz zdajemy sobie sprawę z podziału i podbijania technologii sortowania scalania. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź Linux Wskazówka, aby uzyskać więcej wskazówek i informacji.