любые алгоритмы должны опираться на статистические данные, иначе они не оптимизируются. квиксорт в пределе может до О(n^2) иметь трудоёмкость, но, однако ж, он по статистике именно самый быстрый.
По мне , сами алгоритмы должны подбираться более-менее в динамике. Т.е. то, что мы не можем выбрать даже метод хеширования, например - это реально нездорово. Конечно, должен быть приличный набор алгоритмов одного семейства или даже генерация алгоритмов по заданным параметрам. Но оно есть та, как есть: алгоритмы всё-таки должны учитывать все случаи. Хотя, надо признаться, я обычно исхожу из негативных/песимистических предпосылок, а не из оптимистических.