Стандарт гарантирует
Из стандарта C ++ 11/14, std::sort
гарантированно будет иметь:
§25.4.1.1 / 3
Сложность: O(N log(N))
(где N == last - first
) сравнения.
Другой, стабильный, стандартный алгоритм сортировки (а именно std::stable_sort
) гарантированно будет иметь:
25.4.1.2 / 3
Сложность: выполняется не более N log2(N)
(где N == last - first
) сравнений;если доступно достаточно дополнительной памяти, это N log(N)
.
Для std::forward_list::stable
, вместо:
23.3.4.6 / 26
Сложность: приблизительно N log(N)
сравнений, где N
равно distance(begin(), end())
.
То же самое относится к std::list
:
23.3.5.5 / 31
Сложность: приблизительно N log(N)
сравнения, где N == size()
.
Алгоритм сортировки
Стандарт C ++ не поддерживаетукажите, какой алгоритм сортировки применять в любом из вышеперечисленных случаев.Это было бы часто и ненужным ограничением реализации.
Если вам нужно знать, вам может повезти, если вы посмотрите на конкретную спецификацию компилятора.Например, для GNU GCC вы должны начать с здесь .