Увод у сортирање спајања на Јави

Програм за спајање сортирања у Јави је један од најчешће коришћених и најефикаснијих алгоритама. Спајање сортирања је засновано на техници подешавања и освајања која подразумева поделу одређеног проблема на више подпроблема и независно решавање сваког подпрограма. Када се подпроблеми реше, комбинујемо њихове резултате да бисмо добили коначно решење проблема. Алгоритам сортирања спајања може се имплементирати користећи рекурзију јер укључује рад с подпроблемима, а не главним проблемом.

Како функционише Разврставање спајања?

Размотримо неорторисану матрицу коју треба сортирати помоћу алгоритма спајања сортирања. Ево корака укључених у сортирање низа са вредностима: 18, 8, 4, 13, 10, 12, 7 и 11:

  • Први корак укључује проналажење стожерног елемента на основу којег ће се наш улазни низ подијелити у подрасле.
  • Размотримо да је елемент 13 одабран као стожер, дакле, првобитни низ ће бити подељен у два подрасла. Прва подрачун ће садржати 18, 8, 4, 13, а друга субрачуна садржаће преостале елементе 10, 12, 7, 11.
  • Подрапови добијени у кораку 2 даље су подељени као у кораку 1 и то се наставља.
  • Једном када се главни низ подијели у подрасле с једним елементима, поново започињемо спајање тих подрасла на такав начин да су спојени елементи поредани.
  • Ево како дјелује стварна подјела и освајање:

Програм за сортирање спајања у Јави

Ево примјера кода који приказује имплементацију врсте спајања у јави:

Шифра:

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

Горњи код ће произвести сортирани низ као излаз.

Излаз:

Када требамо користити сортирање спајања?

Разврставање спајања може се користити у следећим сценаријима:

  • Када структура података која се сортира не подржава случајни приступ, тада врста спајања може бити корисна и ефикасна.
  • Када је потребан висок ниво паралелизма, сортирање се може користити јер се различити подпроблеми могу самостално решити користећи више процеса који се одвијају паралелно.
  • Спајање сортирања је брже када се ради са повезаним листама, јер се показивачи могу лако мењати током спајања листа.
  • Спајање сортирања може се сматрати стабилном сортирањем што значи да исти елементи у низу одржавају своје изворне положаје у односу један према другом. У случајевима када је потребна висока стабилност, може се ићи на начин спајања.

Анализа сложености сортирања спајања

Испод тачке анализа сложености спајања:

  • Разврставање спајања је рекурзивни алгоритам и њена временска сложеност је О (н * лог н) у сва три случаја (најгори, најбољи и просечни) јер сорта спајања дели низ на две једнаке половине и потребно им је линеарно време да их споји.
  • Свемир Сложеност спајања је О (н), јер дјелује на рекурзивни приступ. Стога се врста спајања може сматрати брзим, просторним и временски ефикасним алгоритмом.

Упоређивање сортирања спајања са другим алгоритмима

Испод бодова упоређује се врста спајања са другим алгоритмима:

  • Поредај хеап има исту временску сложеност као сортирање спајања, али захтева само помоћни простор О (1) уместо О (н) спајања. Стога је врста хрпе ефикаснија у простору од спајања.
  • Имплементације за брзо сортирање углавном надмашују врсту спајања за сортирање РАС-ова.
  • Спајање сортирања надмашује алгоритме брзог сортирања и гомиле сортирања када радите са повезаном листом јер се показивачи могу лако променити.

Закључак-Програм за сортирање спајања у Јави

Из чланка је закључено да је врста спајања важан концепт за разумијевање када су у питању алгоритми.

Препоручени чланци

Ово је водич за Програм за сортирање спајања у Јави. Овде смо разговарали о томе како треба да ради, како користи, програм Мерге Сорт, итд. Такође можете проћи кроз наше друге сродне чланке да бисте сазнали више -

  1. Спајање сортирања у Јави
  2. Спајање алгоритам сортирања у Јави
  3. Поредај на Ц
  4. Хеап Сорт ин Јава
  5. Јава Деплоимент Тоолс
  6. Хеап Сорт ин Питхон
  7. Брзо сортирање алгоритама на Јави
  8. Топ 6 Алгоритам сортирања у ЈаваСцрипт-у
  9. Топ 6 сортирања алгоритама на Питхон-у

Категорија: