Сортировка слиянием работает, разбивая массив на две части, затем вызывая сортировку слиянием для каждой половины. Когда сортировка слиянием вызывается только с одним элементом, она просто возвращает его. Объединение происходит после рекурсии и собирает массив обратно в отсортированном порядке.
array mergesort(array)
{
if(array.len == 1) return array;
array temp1 = mergesort(array.firsthalf);
array temp2 = mergesort(array.secondhalf);
return merge(temp1, temp2);
}
Проблема применения сортировки слиянием к связанному списку состоит в том, что у вас нет простого способа разбить его пополам. Вам придется повторяться, пока не дойдете до половины пути. Это потребует дополнительного времени и неоправданно повлияет на производительность сортировки слиянием.
С массивом вы можете выполнять простые целочисленные операции с постоянным временем, чтобы разделить его на две части.