Въведение в сортирането на сливания в Java

Програмата за сортиране на сливания в Java е един от най-широко използваните и ефективни алгоритми. Сортирането на сортиране се основава на техниката разделяне и завладяване, която включва разделянето на даден проблем на множество подпроблеми и решаването на всяка подпроблема независимо. Когато подпроблемите са решени, ние комбинираме техните резултати, за да получим окончателното решение на проблема. Алгоритъмът за сортиране на сливане може да бъде реализиран с помощта на рекурсия, тъй като включва работа с подпроблеми, а не с основния проблем.

Как работи сортирането на сливане?

Нека разгледаме несортиран масив, който трябва да бъде сортиран с помощта на алгоритъма за сортиране на сливане. Ето стъпките, участващи в сортирането на масив със стойности: 18, 8, 4, 13, 10, 12, 7 и 11:

  • Първата стъпка включва намиране на основен елемент, въз основа на който нашият входен масив ще бъде разделен на подмасиви.
  • Нека помислим, че елемент 13 е избран като въртящ се, следователно, оригиналният масив ще бъде разделен на две подредове. Първата подреда ще съдържа 18, 8, 4, 13, а втората подреда ще съдържа останали елементи 10, 12, 7, 11.
  • Подредовете, получени в етап 2, се разделят по-нататък, както в етап 1 и това продължава.
  • След като основният масив се раздели на подмасиви с единични елементи, започваме отново да обединяваме тези подредове, така че слетите елементи да са подредени.
  • Ето как работи същинското разделение и завладяване:

Програма за сортиране на сливания в Java

Ето кодов пример, показващ изпълнението на сортирането на сливане в java:

Код:

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

Горният код ще произведе сортиран масив като изход.

изход:

Кога трябва да използваме сортирането на сливане?

Сливане сортиране може да се използва в следните сценарии:

  • Когато структурата на данните за сортиране не поддържа произволен достъп, тогава сортирането на сливане може да бъде полезно и ефективно.
  • Когато се изисква високо ниво на паралелизъм, може да се използва сортиране на сливания, тъй като различни подпроблеми могат да бъдат решени независимо, като се използват множество процеси, които работят паралелно.
  • Сортирането на сортиране е по-бързо при работа със свързани списъци, тъй като показалците могат лесно да се променят, докато обединяват списъците.
  • Сливане Сортиране може да се счита за стабилен сортиране, което означава, че един и същ елемент в масива поддържат първоначалните си позиции по отношение на един друг. В случаите, когато се изисква висока стабилност, може да се премине към сортиране.

Анализ на сложността на сортирането на сливане

По-долу анализ анализ сложност на сортиране на сливане:

  • Сливането на сортиране е рекурсивен алгоритъм и неговата сложност на времето е O (n * log n) и в трите случая (най-лош, най-добър и среден), тъй като сортирането на сливане разделя масива на две равни половини и отнема линейно време, за да ги обедини.
  • Космическа сложност на сортирането на сливане е O (n), тъй като работи при рекурсивния подход. Следователно сортирането на сливане може да се счита за бърз, пространствен и времеви ефективен алгоритъм.

Сравняване на сортиране на сливане с други алгоритми

По-долу точки сравняват сортирането на сливане с други алгоритми:

  • Heap Sort има същата сложност на времето като сортиране на сливане, но изисква само O (1) спомагателно пространство вместо O (n) на сортирането на сливане. Следователно сортирането на купчина е по-ефективно по отношение на пространството от сортирането на сливане.
  • Реализациите за бързо сортиране обикновено превъзхождат сортирането на сливане за сортиране на базирани на RAM масиви.
  • Сливане сортиране превъзхожда бързите алгоритми за сортиране и натрупване на купчина при работа със свързания списък, тъй като указателите могат лесно да бъдат променени.

Заключение-програма за сортиране на сливания в Java

От статията се заключава, че сортирането на сливане е важно понятие, което трябва да се разбере, когато става въпрос за алгоритми.

Препоръчителни статии

Това е ръководство за Програма за сортиране на сливания в Java. Тук обсъждаме как трябва да работи, използването му, програмата за сортиране на сливания и др. Можете също да прегледате и другите ни свързани статии, за да научите повече-

  1. Обединяване Сортиране в Java
  2. Обединяване на алгоритми за сортиране в Java
  3. Сортиране на купчина в С
  4. Сортиране в купа с Java
  5. Инструменти за разполагане на Java
  6. Сортиране на купи в Python
  7. Бързо сортиране на алгоритми в Java
  8. Топ 6 алгоритъм за сортиране в JavaScript
  9. Топ 6 алгоритми за сортиране в Python