Uploaded by Виктор Кудашев

Сортировка методом слияния

advertisement
Сортировка методом
слияния
(MergeSort)
• Сортировка слиянием (англ. merge sort) — алгоритм сортировки,
который упорядочивает списки (или другие структуры данных,
доступ к элементам которых можно получать только
последовательно, например — потоки) в определённом порядке.
Эта сортировка — хороший пример использования принципа
«разделяй и властвуй». Сначала задача разбивается на несколько
подзадач меньшего размера. Затем эти задачи решаются с
помощью рекурсивного вызова или непосредственно, если их
размер достаточно мал. Наконец, их решения комбинируются, и
получается решение исходной задачи.
Шаги выполнения
• массив рекурсивно разбивается пополам, и каждая из половин делиться до
тех пор, пока размер очередного подмассива не станет равным единице;
• далее выполняется операция алгоритма, называемая слиянием. Два
единичных массива сливаются в общий результирующий массив, при этом
из каждого выбирается меньший элемент (сортировка по возрастанию) и
записывается в свободную левую ячейку результирующего массива. После
чего из двух результирующих массивов собирается третий общий
отсортированный массив, и так далее. В случае если один из массивов
закончиться, элементы другого дописываются в собираемый массив;
• в конце операции слияния, элементы перезаписываются из
результирующего массива в исходный.
•
Принцип работы сортировки
Время сортировки
Недостатки
• Недостатком сортировки слиянием является использование
дополнительной памяти. Но когда работать приходиться с
файлами или списками, доступ к которым осуществляется только
последовательно, то очень удобно применять именно этот метод.
Также, к достоинствам алгоритма стоит отнести его устойчивость
и неплохую скорость работы O(n*logn).
Внешний вид программы
Процедура разделения массива
Слияние массива
Генерация массива
Вывод массива и времени сортировки
Download