Introduksjon til Merge Sort i Java

Program for Merge Sort i Java er en av de mest brukte og effektive algoritmene. Merge sort er basert på deling og erobringsteknikk som innebærer å dele et gitt problem i flere delproblemer og løse hvert delproblem uavhengig av hverandre. Når delproblemene er løst, kombinerer vi resultatene for å få den endelige løsningen på problemet. Merge sort algoritme kan implementeres ved hjelp av rekursjon, da det innebærer å jobbe med delproblemer i stedet for hovedproblemet.

Hvordan fungerer Merge Sort?

La oss vurdere en usortert matrise som må sorteres ved hjelp av flettesorteringsalgoritmen. Her er trinnene som er involvert i å sortere en matrise med verdier: 18, 8, 4, 13, 10, 12, 7 og 11:

  • Det første trinnet innebærer å finne et pivotelement på grunnlag av hvilket input-arrayet vårt vil bli delt inn i delområder.
  • La oss tenke på at element 13 er valgt som pivot, og derfor vil den opprinnelige matrisen deles inn i to delområder. Den første undergruppen vil inneholde 18, 8, 4, 13 og den andre undergruppen vil inneholde gjenværende elementer 10, 12, 7, 11.
  • Subarrays oppnådd i trinn 2 blir videre inndelt som i trinn 1, og dette fortsetter.
  • Når hovedoppstillingen er delt inn i delområder med enkeltelementer, begynner vi å slå sammen disse underområdene slik at de sammenslåtte elementene er i sortert rekkefølge.
  • Slik fungerer selve skillet og erobringen:

Program for Merge Sort i Java

Her er et kodeeksempel som viser implementeringen av flettesortering i java:

Kode:

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

Ovenstående kode vil produsere en sortert matrise som output.

Produksjon:

Når skal vi bruke Merge Sort?

Slå sammen sortering kan brukes i følgende scenarier:

  • Når datastrukturen som skal sorteres ikke støtter tilfeldig tilgang, kan sammenslåingssorteringen være nyttig og effektiv.
  • Når det kreves et høyt nivå av parallellitet, kan flettesortering brukes da forskjellige delproblemer kan løses uavhengig ved bruk av flere prosesser som kjører parallelt.
  • Slå sammen sortering er raskere når du arbeider med koblede lister fordi pekere lett kan endres mens du slår sammen listene.
  • Merge Sort kan betraktes som en stabil sortering som betyr at det samme elementet i en gruppe opprettholder sine opprinnelige posisjoner i forhold til hverandre. I tilfeller der det kreves høy stabilitet, kan man gå for sortering.

Kompleksitetsanalyse av sammenslåingssortering

Nedenfor poeng analyserer kompleksiteten av sammenslåingssortering:

  • Merge sort er en rekursiv algoritme, og dens tidskompleksitet er O (n * log n) i alle de tre tilfellene (verste, beste og gjennomsnittlige) da flettingsortering deler arrayet i to like halvdeler og tar lineær tid å slå dem sammen.
  • Plasskompleksitet av sammenslåingssortering er O (n) når den fungerer på den rekursive tilnærmingen. Følgelig kan sammenslåingssorter betraktes som rask, plass og tidseffektiv algoritme.

Sammenligning av flettesortering med andre algoritmer

Nedenfor punkter sammenligner flette sortering med andre algoritmer:

  • Heap Sort har samme tidskompleksitet som sammenslåingssortering, men det krever bare O (1) hjelpeplass i stedet for fusjonssorterings O (n). Derfor er sortering av arealer mer arealeffektiv enn sammenslåingssortering.
  • Hurtigsorteringsimplementeringer overgår generelt merge-sortering for sortering av RAM-baserte matriser.
  • Flett sortering utkonkurrerer rask sortering og heap sorteringsalgoritmer når du arbeider med den koblede listen, da pekere lett kan endres.

Konklusjon-program for sammenslåingssortering i Java

Fra artikkelen konkluderes det med at sammenslåingssorten er et viktig begrep å forstå når det gjelder algoritmer.

Anbefalte artikler

Dette er en guide til Program for Merge Sort i Java. Her diskuterer vi hvordan skal dets arbeid, dets bruk, programmet Merge Sort osv. Du kan også gå gjennom andre relaterte artikler for å lære mer-

  1. Slå sammen sortering i Java
  2. Slå sammen sorteringsalgoritmer i Java
  3. Heap Sort in C
  4. Heap Sort In Java
  5. Java-distribusjonsverktøy
  6. Heap Sort in Python
  7. Rask sorteringsalgoritmer i Java
  8. Topp 6 sorteringsalgoritme i JavaScript
  9. Topp 6 sorteringsalgoritmer i Python