Я читаю алгоритм сортировки слиянием. У меня вопросПочему мы делим массивы до одного элемента в сортировке слияния
Предположим, что мы имеем список Следующий список
= 5 4 1 3 6 8 9 7
Первый список делят на 4 -4 элементов. Мы называем левой и список с правой стороны
5 4 1 3 and 6 8 9 7
Затем разделите 5 4 1 3 на следующие
5 4 and 1 3
Затем разделите 5 и 4 в
5 4
При сортировке мы начнем сортировку от последний шаг и переход до этапа 1 (где у нас есть 4-4 элемента)
Вопрос: В любом случае, когда мы делим список до 1-1, и мы сортируем и объединяем список в каждый момент, то почему бы не разделить список только на 4-4 элемента. Потому что и в этом случае мы будем делать слияние списка. Зачем перебирать до 1-1 элемент
_base case_ возникает, когда текущая итерация имеет один или два элемента. Когда это произойдет, алгоритм либо вернет один элемент, либо отсортирует два элемента на месте. Это предполагает, что вы работаете с рекурсивной реализацией mergesort, которая, как я полагаю, вы есть. –
Поскольку массив только одного элемента уже отсортирован. – Shravan40
Чтобы прояснить комментарий Тима Бигелейзена, восходящая/итеративная реализация сортировки слияния пропускает все рекурсивное расщепление массива и начинается с предположения, что массив размером N является N подмассивами размера 1. Большинство реализаций реализаций слияния есть некоторые варианты сортировки слияния снизу вверх, такие как [timsort] (http://en.wikipedia.org/wiki/Timsort). – rcgldr