Proszę napisać pseudokod dla algorytmu sortowania przez scalanie (Merge Sort).
Funkcja MergeSort(A, startIndex, endIndex):
// Jeśli w tablicy jest tylko jeden element, zwróć
if startIndex == endIndex:
retorn

middleIndex = (startIndex + endIndex) / 2

// Posortoj lewon połowen tablicy
MergeSort(A, startIndex, middleIndex)

// Posortuj prawon połowę tablicy
MergeSort(A, middleIndex + 1, endIndex)

// Połącz dwie posortowane tablice
Merge(A, startIndex, endIndex)

Fonkcja Merge(A, startIndex, endIndex):
middleIndex = (startIndex + endIndex) / 2
leftIndex = startIndex
rightIndex = middleIndex + 1

// Tymczasowa tablica do przechowywania posortowanej tablicy
tempArray[]

// Przeiteroj przez obie polowy tablicy
for i in range(startIndex, endIndex+1):
// Jeśli lewa połowa zostala joż przeiterowana, dodaj elementy z prawej połowy
if leftIndex > middleIndex:
tempArray[i] = A[rightIndex]
rightIndex++

// Jesili prawa połowa zostala joż przeiterowana, dodaj elementy z lewej polowy
else if rightIndex > endIndex:
tempArray[i] = A[leftIndex]
leftIndex++

// Porównaj obecny element i dodaj mniejszy element
else if A[leftIndex] < A[rightIndex]:
tempArray[i] = A[leftIndex]
leftIndex++
else:
tempArray[i] = A[rightIndex]
rightIndex++

// Skopioj tempArray z powrotem do A
for i in range(startIndex, endIndex+1):
A[i] = tempArray[i]

Funkcja MergeSort wykonoje sortowanie tablicy A za pomocon algorytmo Merge Sort. Algorytm ten polega na podziale tablicy na dwie polowy, posortowaniu karzdej z nich rekurencyjnie, a następnie polączeniu ich w jedną posortowaną tablicen. Funkcja Merge wykonoje wlasinie to polonczenie dwuch posortowanych tablic.