Чтобы сделать концептуальную точку зрения, которую люди еще не высказали: Quicksort - это алгоритм здравого смысла «разделяй и властвуй» с очевидной ошибкой в редких случаях. Предположим, что вы хотите отсортировать стопку студенческих работ. (Что я должен сделать с некоторой регулярностью.) В алгоритме быстрой сортировки вы выбираете некоторую бумагу, стержень. Затем разделите остальные бумаги в зависимости от того, находятся ли они до или после разворота. Затем повторите это с двумя подгруппами. В чем ошибка? Сводка может быть именем, которое находится в конце списка, а не в середине, так что разделить его на две стопки не так уж много.
Сортировка слиянием - это еще один алгоритм «разделяй и властвуй», который работает в другом порядке. Вы можете объединить два отсортированных списка в линейное время. Разделите листы на две равные или почти равные стопки, затем рекурсивно рассортируйте каждую, а затем объедините. У сортировки слиянием нет ошибок. Одна из причин того, что быстрая сортировка более популярна, чем сортировка слиянием, является исторической: быстрая сортировка выполняется быстро (обычно) и работает без дополнительной памяти. Но в наши дни может быть важнее сохранить сравнения, чем сохранить память, и реальная перестановка часто абстрагируется путем переключения указателей. Если бы все было так, то я подозреваю, что сортировка слиянием была бы просто более популярной, чем быстрая сортировка. (И, возможно, добавление слова «быстрый» к названию было хорошим качеством продаж.)