Я реализовал интросорт с помощью быстрой сортировки, heapsort ..
Моя версия с ручным кодированием основана на предложении Д. Мюссера с глубиной рекурсии для переключения на heapsort, передаваемым в качестве параметра, выбора медианы 3. Порог элемента для переключения на простой тип вставки был 16.
И gcc, и Microsoft VisualC ++ предоставляют исходный код для std :: sort (в алгоритме заголовочного файла). Таким образом, вы можете посмотреть сами. Я исследовал подобные проблемы раньше. Мой вывод состоял в том, что код был оптимизирован для общего пути к коду даже до такой степени, чтобы сделать код более сложным и сложным в обслуживании. Компромиссы, которые имеют смысл для меня.
Других решений пока нет …