Я изучал алгоритм сортировки слиянием и не могу сделать вывод, сколько массивов фактически создается как часть алгоритма. В некоторой литературе говорится, что весь исходный массив копируется в новый отсортированный массив. Но это означает, что было создано только 2 массива.
Насколько я понимаю, алгоритм сортировки слиянием состоит из двух основных шагов. Разделение и слияние. Я думал, что если вы дадите сортировке слиянием массив из 100 слотов, он фактически создаст новые массивы, поскольку он разбивается посередине на 100 > 50/50 > 25/25 > 12/13 > 6/5 > 3/3 > 1/1. . После всех этих разбиений на данный момент у него в памяти 12 или 13 массивов. И затем, когда, наконец, он копирует все это в новые массивы из 1 > 2 > 3 или 4 > 6 > 12 > 25 > 50 > 100.
Это еще 8 массивов (грубо говоря).
Но в учебниках я читаю такие вещи:
Вы можете задаться вопросом, где в памяти расположены все эти подмассивы. В алгоритме создается массив рабочей области того же размера, что и исходный массив. Подмассивы хранятся в разделах массива рабочей области. Это означает, что подмассивы в исходном массиве копируются в соответствующие места в массиве рабочей области. После каждого слияния массив рабочей области копируется обратно в исходный массив.
-- Структуры данных и алгоритмы в Java Роберт Лафоре