Jak zaimplementować sortowanie w Javie

Jak zaimplementować sortowanie w Javie

W programowaniu Java mogą wystąpić przypadki, w których programista musi sortować wpisy masowe. Na przykład układanie lub analiza losowo wygenerowanych wartości. W takich przypadkach „scalić sort„W Javie jest skuteczny i szybszy, tym samym zużywa mniej czasu na sortowanie dłuższych wpisów lub list w porównaniu z innymi algorytmami I.mi., "Bańka".

Ten blog opracuje wdrożenie algorytmu „sortowania sortowania” w Javie.

Jak wdrożyć „sortowanie sortowania” w Javie?

„„scalić sort”Opiera się na„dziel i rządź„Algorytm w taki sposób, że tablica jest podzielona na równe połówki, a następnie dalej dzielony, aż podział nie będzie już wykonywany. Po podziale tablicy, jest ponownie połączona w oparciu o elementy w sortowany (rosnący) sposób.

Demonstracja algorytmu „sortowania scalania”

Przeglądajmy poniższy kod, aby zrozumieć omawianą koncepcję:

Klasa publiczna łączy się
public static void mergedArray (int [] leftArray, int [] rightArray, int [] finalArray, int leftArraysize, int lightArraysize)
int item = 0, lewy = 0, prawy = 0;
While (po lewejif (leftArray [po lewej]finalArray [item ++] = leftArray [left ++];

w przeciwnym razie
finalArray [item ++] = rightArray [right ++];

While (po lewejfinalArray [item ++] = leftArray [left ++];

While (prawdafinalArray [item ++] = rightArray [right ++];


W powyższym kodzie przydzielonym do scalania zastosuj następujące kroki:

    • Zdefiniuj funkcję o nazwie „MergedArray„Mając podane parametry odpowiednio dla macierzy lewej i prawej, odpowiednio macierzy i rozmiarów lewej i prawej tablicy.
    • W definicji funkcji zainicjuj określone wartości, aby zastosować warunek później w kodzie.
    • W następnym kroku zastosuj połączone „chwila”Pętla i„Jeśli„Warunek sprawdzenia warunku scalania.
    • Jest takie, że jeśli element w lewej tablicy jest mniejszy niż element prawej tablicy w określonym indeksie, wówczas scalona tablica jest dołączona do elementu lewej tablicy, zaczynając od lewej do prawej.
    • W drugim przypadku dołączono element prawej tablicy.
    • Następnie zastosuj „chwila”Pętla, aby sprawdzić, czy tylko elementy w lewej lub prawej tablicy są pozostawione i odpowiednio dołącz je do tablicy.

Realizacja


Teraz przejdźmy do następującego fragmentu kodu:

public static void diviDearray (int [] tablica, int długość)
if (długość < 2)return;
int div = długość / 2;
int [] larray = new int [div];
int [] rarray = new int [długość-DIV];
int temp = 0;
dla (int i = 0; iif (ilarray [i] = tablica [i];

w przeciwnym razie
rarray [temp] = array [i];
temp = temp+1;

DiviDearray (Larray, Div);
DiviDearray (Rarray, Długość Div);
MergedArray (Larray, Rarray, Array, Div, Długość Div);


W tym kodzie zaimplementowanym w celu podzielenia przekazanej tablicy wykonaj poniżej określone kroki:

    • Zdefiniuj funkcję „DiviDearray ()”Parametry wskazujące na przekazaną tablicę i jej długość.
    • Teraz sprawdź warunek tak, aby długość tablicy nie była większa niż „2". Jeśli tak, zwróć tablicę taką, jaka jest. W przeciwnym razie wykonaj dalsze funkcje.
    • Następnie podziel tablicę na dwie równe połówki za pomocą długości (tablica).
    • W następnym kroku utwórz dwie tablice liczb całkowitych na podstawie podzielonej długości przekazanej tablicy.
    • Teraz dołącz lewe i prawe dzielone tablice z elementami przekazanej tablicy.
    • Wreszcie, powołaj się do tej funkcji rekurencyjnie na tych dwóch podzielonych tablicach, które gromadzą skopiowane dane oryginalnej tablicy, i uzyskują dostęp do „mergedArray ()”Funkcja, która porównuje i sortuje lewe i prawe tablice.

Realizacja


Teraz przegląd „główny" kod:

public static void main (string args [])
int [] mergesortArray = 30, 12, 46, 6, 17, 23;
DiviDearray (MergesortArray, MergesortArray.długość);
dla (int i = 0; i< mergesortArray.length;++i)
System.na zewnątrz.print (mergesortArray [i]+ "");


W "główny”, Zastosuj następujące kroki:

    • Zadeklaruj tablicę o nazwie „MergesortArray„To należy sortować.
    • W następnym kroku przywołaj funkcję „DiviDearray ()”Przekazując deklarowaną tablicę i jej długość przez„długość„Własność odpowiednio, jak jej argumenty.
    • Następnie iteruj tablicę i wyświetl sortowane elementy tablicy za pośrednictwem „Do" pętla.
    • Algorytm: Dostarczona tablica zostanie przekazana do funkcji „DiviDearray ()„To dzieli tablicę i tę funkcję, a następnie wywołuje funkcję„mergedArray ()”, Który łączy dzielone tablice na podstawie zawartych elementów.

Realizacja


Cały kod

Klasa publiczna łączy się
public static void mergedArray (int [] leftArray, int [] rightArray, int [] finalArray, int leftArraysize, int lightArraysize)
int item = 0, lewy = 0, prawy = 0;
While (po lewejif (leftArray [po lewej]finalArray [item ++] = leftArray [left ++];

w przeciwnym razie
finalArray [item ++] = rightArray [right ++];

While (po lewejfinalArray [item ++] = leftArray [left ++];

While (prawdafinalArray [item ++] = rightArray [right ++];

public static void diviDearray (int [] tablica, int długość)
if (długość < 2)return;
int div = długość / 2;
int [] larray = new int [div];
int [] rarray = new int [długość-DIV];
int temp = 0;
dla (int i = 0; iif (ilarray [i] = tablica [i];

w przeciwnym razie
rarray [temp] = array [i];
temp = temp+1;

DiviDearray (Larray, Div);
DiviDearray (Rarray, Długość Div);
MergedArray (Larray, Rarray, Array, Div, Długość Div);

public static void main (string args [])
int [] mergesortArray = 30, 12, 46, 6, 17, 23;
DiviDearray (MergesortArray, MergesortArray.długość);
dla (int i = 0; i< mergesortArray.length;++i)
System.na zewnątrz.print (mergesortArray [i]+ "");


Wyjście


W tym wyjściu można sugerować, że przekazana tablica jest odpowiednio sortowana.

Wniosek

Sekt scalania opiera się na „dziel i rządź„Algorytm w taki sposób, że tablica jest podzielona na równe połówki i połączona ponownie w oparciu o posortowane elementy. Wynik algorytmu jest pobierany zgodnie z oryginalnym w sortowany sposób. W tym blogu omówiono wdrożenie algorytmu sortowania scalania w Javie.