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,

  1. Spajanje sortiranja u Javi
  2. Spajanje algoritam sortiranja u Javi
  3. Poredaj na C
  4. Poredaj u Javi
  5. Alati za implementaciju Java
  6. Poredajte u Python
  7. Brzo sortiranje algoritama na Javi
  8. Top 6 algoritma za razvrstavanje u JavaScript
  9. Top 6 sortiranja algoritama na Pythonu

Kategorija: