mergesort(arr, low, high)
Begin
if (low >= high) return
Set mid = low + (high - low) / 2
Call mergesort(arr, low, mid)
Call mergesort(arr, mid + 1, high)
Declare newArr[high - low + 1];
Declare i = low
Declare j = mid + 1
Declare k = 0
while (i <= mid && j <= high), do
if (arr[i] <= arr[j]), then
Set newArr[k] = arr[i];
Increment i by 1
Increment k by 1
else
Set newArr[k] = arr[j]
Increment j by 1
Increment k by 1
End If
End While
while (i <= mid), do
Set newArr[k] = arr[i]
Increment k by 1
Increment i by 1
End While
while (j <= high), do
Set newArr[k] = arr[j]
Increment k by 1
Increment j by 1
End While
for (i = 0; i < k; i++), do
Set arr[low + i] = newArr[i]
End For
End
main()
Begin
Read array size, "size"
Declare arr[size]
for (i = 0 i < size; i++), do
Read number and store in arr[i]
End For
Call mergesort(arr, 0, size - 1)
Display sorted array, arr
End