Задача сортировки. Сортировка выбором. Понятия устойчивости и in-place
. Понятие о методе «разделяй и властвуй»: quicksort и mergesort.
Алгоритм Quick-Sort. Процедура Partition, два варианта её in-place реализации. Рандомизированный выбор опорного элемента. Сложность Quick-Sort в худшем и среднем случаях. Глубина рекурсии в худшем и среднем случаях. Подробности реализации (кратко): сортировка вставками для малых подмассивов, удаление хвостовой рекурсии, медиана трёх.
Алгоритм Merge-Sort. Слияние двух упорядоченных списков. Оценка сложности. Нерекурсивная реализация. Сортировка слиянием без использования дополнительной памяти: swap вместо присваивания, использование части массива в качестве буфера, слияние с перекрыванием входа и выхода.
Задача об оптимальном дереве слияний. Коды Хаффмана.