Introduktion till Merge Sort i Java

Program för sammanslagningssortering i Java är en av de mest använda och effektiva algoritmerna. Sammanfogningssortering baseras på uppdelning och erövringsteknik som innebär att man delar upp ett givet problem i flera delproblem och löser varje delproblem oberoende. När delproblemen är löst kombinerar vi deras resultat för att få den slutliga lösningen på problemet. Merge sort algoritm kan implementeras med rekursion eftersom det innebär att arbeta med delproblem snarare än huvudproblemet.

Hur fungerar sammanslagningssorteringen?

Låt oss överväga en osorterad matris som måste sorteras med hjälp av sammanslagningssorteringsalgoritmen. Här är stegen som ingår i att sortera en matris med värden: 18, 8, 4, 13, 10, 12, 7 och 11:

  • Det första steget innebär att hitta ett pivotelement på grundval av vilket vår inmatningsgrupp kommer att delas upp i delområden.
  • Låt oss överväga att element 13 är valt som pivot, därför kommer den ursprungliga matrisen att delas upp i två delområden. Den första subarrayen kommer att innehålla 18, 8, 4, 13 och den andra subarrayen kommer att innehålla återstående element 10, 12, 7, 11.
  • Subarrays erhållna i steg 2 delas vidare upp som i steg 1 och detta fortsätter.
  • När huvuduppsättningen är uppdelad i delområden med enstaka element, börjar vi sammanföra dessa delområden igen så att de sammanslagna elementen är i sorterad ordning.
  • Så här fungerar den verkliga klyftan och erövrar:

Program för sammanslagningssortering i Java

Här är ett kodexempel som visar implementeringen av sammanslagningssortering i java:

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

Ovanstående kod kommer att producera en sorterad matris som utgång.

Produktion:

När ska vi använda Sortera sortering?

Slå samman sortering kan användas i följande scenarier:

  • När datastrukturen som ska sorteras inte stöder slumpmässig åtkomst, kan sammanslagningssorteringen vara till hjälp och effektiv.
  • När en hög nivå av parallellitet krävs kan sammanslagningssortering användas eftersom olika delproblem kan lösas oberoende med hjälp av flera processer som körs parallellt.
  • Slå samman sortering är snabbare när du arbetar med länkade listor eftersom pekare lätt kan ändras när listorna slås samman.
  • Merge Sort kan betraktas som en stabil sortering vilket innebär att samma element i en matris upprätthåller sina ursprungliga positioner gentemot varandra. I fall där hög stabilitet krävs kan man gå till sorteringssortering.

Komplexitetsanalys av sammanslagningssortering

Nedan poäng analysera komplexiteten i sammanslagningssortering:

  • Sammanfogningssortering är en rekursiv algoritm och dess tidskomplexitet är O (n * log n) i alla de tre fallen (värsta, bästa och genomsnittliga) eftersom sammanslagningssortering delar upp matrisen i två lika halvor och tar linjär tid att slå dem samman.
  • Rymdkomplexitet för sammanslagningssortering är O (n) eftersom den arbetar med den rekursiva metoden. Därför kan sammanslagningssorter betraktas som snabb, utrymme och tidseffektiv algoritm.

Jämförelse av sammanslagningssortering med andra algoritmer

Nedan poäng jämföra sorteringssortering med andra algoritmer:

  • Heap Sort har samma tidskomplexitet som sammanslagningssortering, men det kräver endast O (1) extrautrymme istället för sammanslagningssorterings O (n). Därför är heap sortering mer utrymmeeffektivt än merge sort.
  • Snabbsorteringsimplementeringar överträffar i allmänhet merge-sortering för sortering av RAM-baserade matriser.
  • Slå samman sortera bättre än snabbsorterings- och högsorteringsalgoritmer när du arbetar med den länkade listan eftersom pekare enkelt kan ändras.

Slutsats-program för sammanslagningssortering i Java

Från artikeln dras slutsatsen att sammanslagningssorten är ett viktigt begrepp att förstå när det gäller algoritmer.

Rekommenderade artiklar

Detta är en guide till Program för sammanslagningssortering i Java. Här diskuterar vi hur ska dess arbete, dess användning, programmet Merge Sort osv. Du kan också gå igenom våra andra relaterade artiklar för att lära dig mer-

  1. Slå samman sortering i Java
  2. Slå samman sorteringsalgoritmer i Java
  3. Heap Sort in C
  4. Heap Sort In Java
  5. Java-distributionsverktyg
  6. Heap Sort i Python
  7. Snabbsorteringsalgoritmer i Java
  8. Topp 6 sorteringsalgoritm i JavaScript
  9. Topp 6 sorteringsalgoritmer i Python

Kategori: