Кто-нибудь знает как ожидаемое время работы, так и наихудшее время работы для разных реализаций std::nth_element
? Я использую этот алгоритм почти каждый день.Сложности реализации nth_element
Меня особенно интересуют версии STL, поставляемые с недавними компиляторами Microsoft, но любая информация по этой теме полезна.
Please note that this is not a duplicate of this question. Я понимаю, какие алгоритмы существуют, но мне интересно, какие реализации используют алгоритмы.
Для фона существуют общеизвестные алгоритмы для этого. Один из них - это O (n) средний случай и O (n log n) наихудший случай, один - O (n) наихудший случай, но медленный на практике (медиана медианов). Также обратите внимание, что there is talk of interesting implementation strategies to get worst-case O(n) running times that are fast in practice. В стандарте говорится, что это должно быть хуже O (n) среднего времени.
Стандарт говорит * Сложность: Линейная в среднем. * Вы искали заголовок для реализации? Это может быть началом. – dirkgently
Хорошо, я разъясняю вопрос, основанный на этом. –
Связанная [ошибка] (https://connect.microsoft.com/VisualStudio/feedback/details/184518/incorrect-implementation-of-c-stl-nth-element-algorithm), где вы можете получить некоторое представление об оптимизации в VS. – dirkgently