Существуют стабильные алгоритмы сортировки, которые сохраняют элементы, которые сравниваются, в первоначальном порядке. Если это важно для вас, вы бы использовали алгоритм стабильной сортировки, даже если он медленнее.
В некоторых случаях более простые алгоритмы быстрее (поскольку очевидно, что более медленный алгоритм никогда не будет более полезным, если у него нет других преимуществ).
Я видел одну ситуацию, когда массив был отсортирован, а затем каждый элемент массива был изменен на небольшое количество. Таким образом, большинство предметов были в правильном положении, и только некоторые из них нуждались в обмене. В этом случае шейкерсорт оказался оптимальным.
Если вы знаете, что массив был отсортирован, а затем было изменено небольшое количество элементов, для этого есть умный алгоритм (который вы найдете где-то на cs.stackexchange.com): если k элементов былоизменено, вы можете извлечь не более 2 тыс. элементов в отдельный массив, отсортировать их (скорее всего, с помощью быстрой сортировки) и объединить два массива.
Если вы используете библиотечную функцию, вряд ли это будет простая быстрая сортировка. Например, реализация Apple ищет отсортированный диапазон в начале и в конце массива, и, если уже отсортировано значительное количество элементов, это дает преимущество (например, сортировка конкатенации двух отсортированных массивов выполняется за линейное время).