Что такое сортировка слиянием?
Сортировка слиянием — это метод сортировки, использующий стратегию «разделяй и властвуй».
Проще говоря, он делит заданный массив на две половины, рекурсивно вызывает себя для этих двух половин, а затем объединяет отсортированные половины.
Почему важна сортировка слиянием?
Сортировка слиянием имеет временную сложность в наихудшем, среднем и наилучшем случаях O(n log n). Этоквазилинейное время, в котором используются одни из самых быстрых алгоритмов сравнительной сортировки, включая Quicksort и Heapsort.
Как работает сортировка слиянием?
Мы можем рассмотреть несортированный массив, показанный ниже:
{ 65 24 31 12 6 2 1 19 }
Теперь разделим весь массив на равные половины. Поскольку приведенный выше массив имеет 8 значений, то его можно разделить на два массива по 4 значения в каждом. (Если размер массива нечетный, то не беспокойтесь — последнее значение останется в стороне до процесса сортировки).
{ 65 24 31 12 } { 6 2 1 19 }
Мы снова разделим эти два массива пополам.
{ 65 24 } { 31 12 } { 6 2 } { 1 19 }
Эти массивы теперь снова будут разделены пополам, так что их нельзя будет снова разделить (несет одно значение).
{ 65 } { 24 } { 31 } { 12 } { 6 } { 2 } { 1 } { 19 }
Теперь значения будут объединены в массив так же, как он был разбит. Для этого мы должны сравнить элемент для каждого списка, а затем объединить их в другой список при их сортировке. Принимая во внимание первые два значения, мы видим, что они не в правильном порядке, поэтому мы поменяем их местами, прежде чем назначать их в один массив. Этот процесс будет продолжаться для остальных значений соответственно.
{ 24 65 } { 12 31 } { 2 6 } { 1 19 }
На следующей итерации мы еще раз сравним значения и объединим их в два массива.
{ 12 24 31 65 } { 1 2 6 19 }
Затем идет последняя итерация, которая сравнивает значения и объединяет два массива в один.
{ 1 2 6 12 19 24 31 65 }
Java-реализация алгоритма сортировки слиянием
Поздравляем! Теперь вы изучили основы алгоритма сортировки слиянием!
А пока ставьте лайки этой статье сколько угодно, если она вам понравилась, оставляйте комментарии внизу, если вас что-то беспокоит, проверяйте мой профиль в LinkedIn и подписывайтесь на меня в Medium, чтобы не пропустить еще больше замечательных статей!