Wprowadzenie do sortowania korespondencji seryjnej w Javie
Program do sortowania korespondencji seryjnej w Javie jest jednym z najczęściej używanych i wydajnych algorytmów. Sortowanie metodą scalania opiera się na technice dzielenia i podbijania, która polega na podzieleniu danego problemu na wiele podproblemów i rozwiązaniu każdego podproblemu niezależnie. Po rozwiązaniu podproblemów łączymy ich wyniki, aby uzyskać ostateczne rozwiązanie problemu. Algorytm sortowania scalonego można zaimplementować za pomocą rekurencji, ponieważ wymaga on pracy z podproblemami, a nie głównym problemem.
Jak działa sortowanie korespondencji seryjnej?
Rozważmy nieposortowaną tablicę, którą należy posortować za pomocą algorytmu sortowania scalającego. Oto kroki związane z sortowaniem tablicy o wartościach: 18, 8, 4, 13, 10, 12, 7 i 11:
- Pierwszy krok polega na znalezieniu elementu przestawnego, na podstawie którego nasza tablica wejściowa zostanie podzielona na podcienie.
- Rozważmy, że element 13 jest wybrany jako oś obrotu, dlatego pierwotna tablica zostanie podzielona na dwie pod-tablice. Pierwsza podtablica będzie zawierać 18, 8, 4, 13, a druga podtablica będzie zawierać pozostałe elementy 10, 12, 7, 11.
- Podcienie uzyskane w etapie 2 są dalej dzielone jak w etapie 1 i to trwa.
- Gdy główna tablica zostanie podzielona na podgrupy z pojedynczymi elementami, zaczynamy ponownie scalać te podgrupy w taki sposób, aby scalone elementy były posortowane.
- Oto jak działa podział i podbijanie:
Program do sortowania korespondencji seryjnej w Javie
Oto przykład kodu pokazujący implementację sortowania korespondencji seryjnej w java:
Kod:
package com.edubca.sorting;
public class MergeSort (
private int() array;
private int() tempMergedArr;
private int length;
public static void main(String a())(
int() inputArr = (18, 8, 4, 13, 10, 12, 7, 11);
MergeSort mergeSort = new MergeSort();
mergeSort.sort(inputArr);
for(int i:inputArr)(
System.out.print(i + " ");
)
)
public void sort(int inputArr()) (
this.array = inputArr;
this.length = inputArr.length;
this.tempMergedArr = new int(length);
performMergeSort(0, length - 1);
)
private void performMergeSort(int lowerIndex, int higherIndex) (
if (lowerIndex < higherIndex) (
int middle = lowerIndex + (higherIndex - lowerIndex) / 2;
// Sort the left side of the array call performMergeSort recursively
performMergeSort(lowerIndex, middle);
// Sort the right side of the array call performMergeSort recursively
performMergeSort(middle + 1, higherIndex);
// Merge subparts using a temporary array
mergeData(lowerIndex, middle, higherIndex);
)
)
private void mergeData (int lowerIndex, int middle, int higherIndex) (
for (int i = lowerIndex; i <= higherIndex; i++) (
tempMergedArr(i) = array(i);
)
int i = lowerIndex;
int j = middle + 1;
int k = lowerIndex;
while (i <= middle && j <= higherIndex) (
if (tempMergedArr(i) <= tempMergedArr(j)) (
array(k) = tempMergedArr(i);
i++;
) else (
array(k) = tempMergedArr(j);
j++;
)
k++;
)
while (i <= middle) (
array(k) = tempMergedArr(i);
k++;
i++;
)
)
)
Powyższy kod wygeneruje posortowaną tablicę jako wynik.
Wynik:
Kiedy powinniśmy użyć sortowania według scalania?
Sortowania według scalenia można użyć w następujących scenariuszach:
- Gdy struktura danych do sortowania nie obsługuje dostępu losowego, sortowanie według scalania może być pomocne i wydajne.
- Gdy wymagany jest wysoki poziom równoległości, można zastosować sortowanie scalające, ponieważ różne podproblemy można rozwiązać niezależnie przy użyciu wielu równoległych procesów.
- Sortowanie ze scalaniem jest szybsze podczas pracy z listami połączonymi, ponieważ wskaźniki można łatwo zmienić podczas scalania list.
- Sortowanie scalone można traktować jako sortowanie stabilne, co oznacza, że ten sam element w tablicy zachowuje swoje oryginalne pozycje względem siebie. W przypadkach, w których wymagana jest wysoka stabilność, można przejść do sortowania po scaleniu.
Analiza złożoności sortowania korespondencji seryjnej
Poniżej punktowa analiza złożoności sortowania korespondencji seryjnej:
- Sortowanie scalone jest algorytmem rekurencyjnym, a jego złożoność czasowa wynosi O (n * log n) we wszystkich trzech przypadkach (najgorszy, najlepszy i średni), ponieważ sortowanie scalone dzieli tablicę na dwie równe połowy i ich scalenie zajmuje czas liniowy.
- Złożoność przestrzenna sortowania przez scalenie wynosi O (n), ponieważ działa w oparciu o podejście rekurencyjne. Stąd sortowanie scalające można uznać za algorytm szybki, przestrzenny i czasowy.
Porównanie sortowania scalonego z innymi algorytmami
Poniższe punkty porównują sortowanie według scalania z innymi algorytmami:
- Sortowanie sterty ma tę samą złożoność czasową co sortowanie po scaleniu, ale wymaga tylko przestrzeni pomocniczej O (1) zamiast O (n) sortowania po scaleniu. Dlatego sortowanie sterty zajmuje więcej miejsca niż sortowanie scalone.
- Implementacje szybkiego sortowania zwykle przewyższają sortowanie scalające przy sortowaniu tablic opartych na pamięci RAM.
- Scal sortowanie przewyższa algorytmy szybkiego sortowania i sortowania sterty podczas pracy z połączoną listą, ponieważ wskaźniki można łatwo zmienić.
Program końcowy do sortowania korespondencji seryjnej w Javie
Z artykułu wynika, że sortowanie według scalania jest ważną koncepcją, którą należy zrozumieć, jeśli chodzi o algorytmy.
Polecane artykuły
Jest to przewodnik po Program dla sortowania korespondencji seryjnej w Javie. Tutaj omawiamy, jak powinna działać, jak korzystać, program Merge Sort itp. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej-
- Scal sortowanie w Javie
- Scal sortowanie algorytmów w Javie
- Sortuj sterty w C.
- Sortuj sterty w Javie
- Narzędzia wdrażania Java
- Sortuj sterty w Pythonie
- Algorytmy szybkiego sortowania w Javie
- Top 6 algorytm sortowania w JavaScript
- Top 6 algorytmów sortowania w Pythonie