Когда Big-O = x классифицируется как неэффективный? - PullRequest
3 голосов
/ 24 ноября 2010

Допустим, у нас есть проблема, которую мы реализовали, используя алгоритм X с O(n) или O(log n) или etc....Когда значение n достаточно велико, чтобы мы могли рассмотреть альтернативную реализацию?Посмотрим, смогу ли я объяснить себя немного лучше.

Для n = 10000

O (n ^ 2) = 100 000 000

O (n) = 10000

O (Log n) = 4

.,.

Очевидно, что лучшим алгоритмом будет алгоритм с самым низким "Big-o".

Итак, скажем, мы сортируем массив длины 5 с использованием пузырьковой сортировки, результат 25, это не так уж и плохо.Но когда результат обозначения O настолько велик, что реально мы должны использовать другую реализацию.

Ответы [ 4 ]

4 голосов
/ 24 ноября 2010

Когда это узкое место в вашем приложении.

Но в целом стремитесь к алгоритмам с наименьшей сложностью, а также к простоте реализации.

1 голос
/ 24 ноября 2010

Определенная сложность Big O не означает, что вы всегда должны избегать ее; Вы должны использовать алгоритмы меньшей сложности, но O (n ^ 2), где n равно 12, будет работать достаточно быстро, несмотря на то, что O (n ^ 2) обычно считается «плохой» сложностью.

O (n ^ 2) не означает автоматически «слишком медленно»; O (n log n) не означает автоматически: «да, это быстро». Если данный алгоритм работает слишком медленно, вы хотите сократить его время выполнения, и вы часто можете сделать это, уменьшив его сложность, но пока он не станет проблемой, не беспокойтесь.

0 голосов
/ 24 ноября 2010

Когда это эквивалентно alt text и альфа = 1.

0 голосов
/ 24 ноября 2010

Решение слишком неэффективно, когда есть другое решение, которое ниже Big-O и, следовательно, более эффективно.

...