Scal sort w JavaScript

Scal sort w JavaScript
Scal sort. Po zakończeniu tego procesu „podzielenia i podbijania” rozpoczyna scalanie każdej sub-listy, aby utworzyć posortowaną listę.

Jak działa sortowanie

Teraz zrozumiemy działanie scalania z pomocą przykładu:

Rozważmy kolejny przykład sortowania sortowania, w którym mamy w sumie siedem (dziwnych) elementów w tablicy i sortujemy je w kolejności rosnącej:

[5, 7, 1, 4, 6, 3, 2]

Podziel tablicę na dwa podwyrężanie

[5, 7, 1] i [4, 6, 3, 2]

Ponownie każda tablica zostanie podzielona na dwa podmioty

[5], [7, 1] i [4, 6], [3, 2]

Tutaj z czterech pod-pod-pod-nowoczesnych jeden podrzędny ma tylko jeden element, ale pozostałe trzy tablice wciąż mają więcej niż jeden element, więc dalej podzielimy każdą z tych tablic na dwie tablice.

[5], [7], [1], [4], [6], [3], [2]

Teraz pierwszy krok jest zakończony, ponieważ każda tablica ma tylko jeden element. Teraz porównamy elementy tablicy i połączymy te tablice pojedynczych elementów z parami.

[5, 7], [1, 4], [3, 6], [2]

Dokonujemy porównania między elementami macierzy pierwszych dwóch tablic i dwóch ostatnich tablic i przesuwamy mniejsze wartości na lewą stronę i większe wartości na prawą stronę.

Porównanie elementów pierwszych dwóch tablic i dwóch drugich tablic zostanie przeprowadzone. Na przykład pierwsze dwie tablice to [5,7] i [1,4]. 5 zostanie najpierw porównane do 1, a następnie do 4. Następnie drugi element, który wynosi 7, ulegnie tej samej procedurze, a wynikowy macierz wynosi [1,4,5,7]. Teraz poradzimy sobie z dwoma ostatnimi tablicami, które wynoszą [3,6] i [2]. Po porównaniu, jak dostajemy tablica [2,3,6].

[1, 4, 5, 7] [2, 3, 6]

Teraz mamy dwie tablice; [1,4,5,7] i [2,3,6]. Nazwijmy je Arraya [1,4,5,7] I Arrayb [2,3,6] odpowiednio.

Po pierwsze, pierwszy element ”1" z Arraya zostanie porównane z drugim elementem ”2" z Arrayb i mniejsza liczba „1”Będzie przechowywany w nowej sortowanej tablicy

[1]

W następnej iteracji „2”Będzie porównywany z następnym elementem”4" z Arraya. Mniejszy „2”Będzie przechowywany w nowej sortowanej tablicy.

[1,2]

Tym razem „4” Arraya zostanie porównana z następnym elementem „3” Arrayb. Ponieważ „3” jest mniejsze, więc zostanie wprowadzony do nowej sortowanej tablicy.

[1,2,3]

Ta procedura zostanie wykonana z każdym elementem obu tablic, a po porównywaniu wszystkich elementów wynikowy będzie macierz; [1,2,3,4,5,6,7].

[1, 2, 3, 4, 5, 6, 7]

Scal sort w JavaScript

Jak dowiedzieliśmy się, jak działa sortowanie sortowania, będziemy go kodować w JavaScript.

Utwórz funkcję rekurencyjną, aby podzielić nieprojektowaną tablicę, nazwaliśmy ją „merge_sort". Funkcja rekurencyjna zawsze ma podstawowy przypadek, aby zatrzymać program. Przekazujemy nieprojektowaną tablicę do „merge_sort”Funkcja i wewnątrz tej funkcji znajdujemy środkowy indeks tablicy, dzieląc długość tablicy przez 2. Ponadto wykorzystujemy metodę „Splice ()”, aby podzielić tablicę na pod-podbrzeże.

funkcja merge_sort (unSortEdArray)
const midle_index = UnsortedArray.Długość / 2
if (UnsortedArray.długość < 2)
powrót UnsortedArray

const leftArray = UnsortedArray.splice (0, midle_index)
Return MerGearray (merge_sort (leftArray), merge_sort (unSortEdArray))

Teraz omówimy kod, aby połączyć dwie dzielone tablice. Te dzielone tablice są już posortowane w funkcji „Merge_sort”, a teraz łączymy je w „Mergearrays”Funkcja.

Funkcja mergearrays (leftArray, prawyArray)
Niech Ary = []
While (LeftArray.długość && prawyArray.długość)
if (leftArray [0] < rightArray[0])
Ary.Push (LeftArray.zmiana())
w przeciwnym razie
Ary.Push (RightArray.zmiana())


powrót [… ary,… leftarray,… prawy lakier]

W powyższej funkcji „LeftArray” i „RightArray” to dwie posortowane tablice i łączymy je, aby uzyskać pojedynczą tablicę posortowaną. W tym przykładzie stosuje się dwie metody: „The„naciskać()”Metoda dodania wartości na końcu posortowanej tablicy i„zmiana()„Metoda usuwania wartości wybranej z podrzędnej. Wreszcie konsola.Metoda log () służy do testowania wyjścia.

Pełny fragment kodu byłby taki:

Funkcja mergearrays (leftArray, prawyArray)
Niech Ary = []
While (LeftArray.długość && prawyArray.długość)
if (leftArray [0] < rightArray[0])
Ary.Push (LeftArray.zmiana())
w przeciwnym razie
Ary.Push (RightArray.zmiana())


powrót [… ary,… leftarray,… prawy lakier]

funkcja merge_sort (unSortEdArray)
const midle_index = UnsortedArray.Długość / 2
if (UnsortedArray.długość < 2)
powrót UnsortedArray

const leftArray = UnsortedArray.splice (0, midle_index)
return merGearrays (merge_sort (leftArray), merge_sort (unSortEdArray))

UnsortedArray = [5, 7, 1, 4, 6, 3, 2];
konsola.log (merge_sort (unSortEdArray));

Wyjście:

Wniosek:

Scal sort. W tym poście nauczyliśmy się koncepcji scalania, a następnie rozważaliśmy kilka przykładów, a na koniec wdrożyliśmy je w JavaScript. Wyjaśniliśmy również, jak działają metoda splice, metoda push i metoda przesunięcia w JavaScript.