Uvod v Razvrsti spajanje na Javi

Program za sortiranje združevanja v Javi je eden najpogosteje uporabljanih in učinkovitih algoritmov. Razvrstitev združevanja temelji na tehniki delitve in osvajanja, ki vključuje delitev določenega problema na več podproblemov in neodvisno reševanje vsake podprobleme. Ko so podproblemi rešeni, združimo njihove rezultate, da dobimo končno rešitev problema. Algoritem razvrščanja združevanja je mogoče izvesti s pomočjo rekurzije, saj vključuje delo s podproblemi in ne kot glavno težavo.

Kako deluje razvrstitev združevanja?

Razmislimo o nesortiranem nizu, ki ga je treba razvrstiti z algoritmom združevanja. Tu so naslednji koraki pri razvrščanju matrike z vrednostmi: 18, 8, 4, 13, 10, 12, 7 in 11:

  • Prvi korak vključuje iskanje vrtilnega elementa, na podlagi katerega bo naš vhodni niz razdeljen na poddruge.
  • Upoštevajmo, da je element 13 izbran kot vrtišče, zato bo izvirni niz razdeljen na dve poddrugi. Prva poddruga bo vsebovala 18, 8, 4, 13, druga podreje pa bo vsebovala preostale elemente 10, 12, 7, 11.
  • Podračuni, dobljeni v koraku 2, so nadalje razdeljeni kot v koraku 1 in to se nadaljuje.
  • Ko je glavna matrika razdeljena na podravle z enojnimi elementi, začnemo znova združevati te podravle tako, da so združeni elementi v urejenem vrstnem redu.
  • Tukaj je opisano, kako deluje dejanski razkol in osvajanje:

Program za sortiranje združevanja v Javi

Tu je primer kode, ki prikazuje izvajanje vrste združitve v javi:

Koda:

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++;
)
)
)

Zgornja koda bo ustvarila razvrščen niz kot izhod.

Izhod:

Kdaj naj uporabimo Razvrsti združitev?

Razvrsti spajanje je mogoče uporabiti v naslednjih scenarijih:

  • Če struktura podatkov, ki jo želite razvrstiti, ne podpira naključnega dostopa, je lahko vrsta združevanja koristna in učinkovita.
  • Kadar je potrebna visoka stopnja paralelizma, je mogoče uporabiti razvrstitev združevanja, saj je mogoče različne podprobleme rešiti neodvisno z uporabo več postopkov, ki potekajo vzporedno.
  • Razvrstitev združevanja je hitrejša pri delu s povezanimi seznami, saj lahko kazalce med združevanjem seznamov enostavno spremenite.
  • Združevanje Razvrsti lahko štejemo za stabilno razvrščanje, kar pomeni, da isti elementi v nizu ohranjajo svoje prvotne položaje drug glede drugega. V primerih, ko je potrebna visoka stabilnost, lahko gremo za združevanje.

Analiza zapletenosti sorte združevanja

Spodaj točke analize kompleksnosti vrste združitve:

  • Razvrstitev združevanja je rekurzivni algoritem in njegova časovna zapletenost je O (n * log n) v vseh treh primerih (najslabši, najboljši in povprečni), saj sorta združevanja razdeli matriko na dve enaki polovici in traja linearni čas, da jih združi.
  • Vesolje Kompleksnost vrste spajanja je O (n), saj deluje na rekurzivni pristop. Zato lahko razvrstitev združitve štejemo za hiter, vesoljski in časovno učinkovit algoritem.

Primerjava razvrstitve združevanja z drugimi algoritmi

Spodaj točke primerjajo razvrstitev združevanja z drugimi algoritmi:

  • Razvrstitev je enaka časovni zapletenosti kot sorta spajanja, vendar potrebuje samo O (1) pomožni prostor namesto O (n) meritve. Zato je razvrščanje kopice bolj prostorsko učinkovito kot združitev.
  • Izvedbe za hitro razvrščanje običajno prekašajo vrsto združevanja za razvrščanje nizov na osnovi RAM-a.
  • Združevanje razvrstitve presega algoritme za hitro razvrščanje in združevanje pri delu s povezanim seznamom, saj lahko kazalce enostavno spremenite.

Zaključek-program za sortiranje združevanja v Javi

Iz članka je sklenjeno, da je vrsta združitve pomemben koncept, ki ga je treba razumeti, ko gre za algoritme.

Priporočeni članki

To je vodnik za program Razvrsti združitev v Javi. Tukaj razpravljamo o tem, kako naj deluje, kako uporablja, program Merge Sort itd. Obiščite lahko tudi druge naše povezane članke, če želite izvedeti več -

  1. Združi razvrščanje v Javi
  2. Združite algoritme razvrščanja v Javi
  3. Razvrstite v C
  4. Razvrsti po Javi
  5. Java Tools Deployment Tools
  6. Razvrstite v Python
  7. Hitro razvrščanje algoritmov na Javi
  8. Najboljših 6 algoritmov za razvrščanje v JavaScript
  9. Najboljših 6 algoritmov za razvrščanje v Pythonu