Uvod u Razvrstavanje spajanja u Javi
Program za spajanje sortiranja u Javi jedan je od najčešće korištenih i najučinkovitijih algoritama. Razvrstavanje spajanja temelji se na tehnici dijeljenja i osvajanja koja uključuje dijeljenje zadanog problema na više podproblema i rješavanje svakog podprograma. Kad se podproblemi riješe, kombiniramo njihove rezultate da bismo dobili konačno rješenje problema. Algoritam sortiranja spajanja može se primijeniti pomoću rekurzije jer uključuje rad s podproblemima, a ne glavnim problemom.
Kako funkcionira Razvrstavanje spajanja?
Razmotrimo nesortirani niz koji treba razvrstati pomoću algoritma spajanja sortiranja. Evo koraka uključenih u razvrstavanje niza s vrijednostima: 18, 8, 4, 13, 10, 12, 7 i 11:
- Prvi korak uključuje pronalaženje stožernog elementa na osnovu kojeg će se naš ulazni niz podijeliti u podrasle.
- Razmotrimo da je element 13 odabran kao stožer, stoga će se izvorni niz podijeliti u dva podrasla. Prva podrasla sadržavat će 18, 8, 4, 13, a druga podrasla sadržavat će preostale elemente 10, 12, 7, 11.
- Podrasla dobivena u koraku 2 nadalje se dijele kao u koraku 1 i to se nastavlja.
- Nakon što se glavni niz podijeli u podrasle s jednim elementima, ponovo započinjemo spajanje tih podrasla na takav način da su spojeni elementi poredani.
- Evo kako djeluje stvarna podjela i osvajanje:
Program za spajanje sortiranja u Javi
Evo primjera koda koji prikazuje provedbu vrste spajanja u javi:
Kodirati:
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++;
)
)
)
Gornji kod proizvest će sortirani niz kao izlaz.
Izlaz:
Kada trebamo koristiti sortiranje spajanja?
Razvrstavanje spajanja može se koristiti u sljedećim scenarijima:
- Kad struktura podataka koja će se sortirati ne podržava slučajni pristup, tada vrsta spajanja može biti korisna i učinkovita.
- Kad je potrebna visoka razina paralelizma, može se upotrijebiti vrsta spajanja, jer se različiti podproblemi mogu samostalno riješiti koristeći više postupaka koji se odvijaju paralelno.
- Razvrstavanje spajanja je brže pri radu s povezanim popisima jer se pokazivači mogu lako mijenjati tijekom spajanja popisa.
- Spajanje sortiranja može se smatrati stabilnom sortiranjem što znači da isti elementi u nizu održavaju svoje izvorne položaje jedan prema drugom. U slučajevima kada je potrebna visoka stabilnost, može se ići na spajanje vrsta.
Analiza složenosti sortiranja spajanja
Ispod bodova analiza složenosti spajanja:
- Razvrstavanje spajanja je rekurzivni algoritam i njena vremenska složenost je O (n * log n) u sva tri slučaja (najgori, najbolji i prosječni) jer sorta spajanja dijeli niz na dvije jednake polovice i treba im linearno vrijeme da ih spoji.
- Svemir Složenost vrste spajanja je O (n) jer djeluje na rekurzivni pristup. Stoga se vrsta spajanja može smatrati brzim, prostornim i vremenski učinkovitim algoritmom.
Usporedba sortiranja spajanja s drugim algoritmima
Ispod bodova uspoređuje se vrsta spajanja s drugim algoritmima:
- Poredaj hrpe ima istu vremensku složenost kao sortiranje spajanja, ali zahtijeva samo O (1) pomoćni prostor umjesto O (n) spajanja. Stoga je vrsta hrpe učinkovitija u prostoru od spajanja.
- Implementacije brzog sortiranja općenito nadmašuju razvrstavanje spajanja za razvrstavanje RAS-ovih nizova.
- Spajanje sortiranja nadmašuje algoritme brzog sortiranja i gomile sortiranja dok radite s povezanim popisom jer se pokazivači mogu lako promijeniti.
Zaključak-Program za spajanje sortiranja u Javi
Iz članka je zaključeno da je vrsta spajanja važan koncept za razumijevanje algoritama.
Preporučeni članci
Ovo je vodič za Program za spajanje sortiranja na Javi. Ovdje smo razgovarali o tome kako treba raditi, njegovu upotrebu, program Merge Sort, itd. Također možete proći kroz naše druge povezane članke da biste saznali više,
- Spajanje sortiranja u Javi
- Spajanje algoritam sortiranja u Javi
- Poredaj na C
- Poredaj u Javi
- Alati za implementaciju Java
- Poredajte u Python
- Brzo sortiranje algoritama na Javi
- Top 6 algoritma za razvrstavanje u JavaScript
- Top 6 sortiranja algoritama na Pythonu