Существует ли основной список обозначений Big-O для всего? - PullRequest
17 голосов
/ 08 октября 2008

Существует ли основной список обозначений Big-O для всего? Структуры данных, алгоритмы, операции, выполняемые для каждого, среднего случая, наихудшего случая и т. Д.

Ответы [ 6 ]

8 голосов
/ 08 октября 2008

Словарь алгоритмов и структур данных - довольно полный список, включающий сложность (Big-O) в описание алгоритмов. Если вам нужна дополнительная информация, она будет указана в одной из ссылок, и в качестве запасного варианта всегда есть Википедия.

6 голосов
/ 08 октября 2008

Книга Cormen больше рассказывает о том, как доказать, каким будет Big-O для данного алгоритма, а не как запоминание алгоритма до его производительности Big-O. Первый гораздо ценнее второго и требует вложений с вашей стороны.

2 голосов
/ 08 октября 2008

В c ++ стандарты STL определяются характеристиками алгоритмов Big-O, а также требованиями к пространству. Таким образом, вы можете переключаться между конкурирующими реализациями STL и при этом знать, что ваша программа имеет одинаковые характеристики времени выполнения. Особенно хорошие реализации STL могут даже списки особых случаев определенных типов быть лучше, чем стандартные требования.

Это позволило легко выбрать правильный итератор или тип списка для конкретной задачи, потому что вы могли легко взвесить между потреблением места и скоростью.

Ofcourse Big-O - это только направляющая линия, так как все константы удалены. Если алгоритм работает в k * O (n), он будет классифицирован как O (n), но если k достаточно высокий, он может быть хуже, чем O (n ^ 2) для некоторых значений n и m.

2 голосов
/ 08 октября 2008

Попробуйте " Введение в алгоритмы " от Cormen, Leisersen и Rivest. Если его там нет, его, вероятно, не стоит знать.

0 голосов
/ 06 ноября 2014

Всем, кто подходит к этому вопросу из Google.

http://bigocheatsheet.com/

0 голосов
/ 08 октября 2008

Введение в алгоритмы, второе издание , он же CLRS (Cormen, Leiserson, Rivest, Stein), - самое близкое, что я могу придумать.

Если не получится, попробуйте Искусство компьютерного программирования от Кнута. Если это не так, вам, вероятно, нужно провести какое-то реальное исследование.

...