freeCodeCamp/guide/russian/computer-science/notation/big-o-notation/index.md

8.1 KiB
Raw Blame History

title localeTitle
Big O Notation Обозначение Big O

Обозначение Big O

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

Обозначение Big O используется в информатике для описания производительности или сложности алгоритма. На самом деле примечание Big O - это специальный символ, который говорит вам, насколько быстро алгоритм. Конечно, вы часто будете использовать предопределенные алгоритмы - и когда вы это делаете, важно понять, насколько они быстры или медленны.

Какая надпись Big O выглядит?

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

Big O устанавливает наихудшее время выполнения

Скажите, что вы врач, который лечит Гарри Аббита, вы можете заглянуть в электронные записи, связанные с историей болезни Гарри Аббита (он первый человек в списке). Давайте рассмотрим ситуацию, когда его жизнь зависит от всех доступных медицинских данных. Предположим, вы используете простой поиск для поиска человека в электронных записях. Вы знаете, что для простого поиска требуется время O (n), поэтому вам придется просматривать каждую запись для Abbit. Конечно, вы заметили, что Abbit - это первая запись, поэтому вам не нужно было смотреть на каждую запись - вы ее нашли с первой попытки.

Этот алгоритм взял время O (n)? Или это заняло O (1) раз, потому что вы нашли человека с первой попытки?

В этом случае это лучший вариант. Но примечание Big O относится к наихудшему сценарию. Это O (n) время (простой поиск по-прежнему занимает). Убедительно, что простой поиск никогда не будет медленнее, чем O (n).

Время работы алгоритма растет с разной скоростью

Предположим, для проверки одной записи требуется 1 миллисекунда. При простом поиске врач должен проверить 10 записей, поэтому для поиска требуется 10 мс. С другой стороны, ему нужно проверить только три элемента с бинарным алгоритмом поиска (log10 примерно равно 3), поэтому для поиска требуется 3 мс.

Но реалистично, список будет иметь более ста элементов.

Если да, то как долго будет проходить простой поиск? Как долго будет бинарный поиск?

Время прогона для простого поиска с 1 миллиардом предметов составит 1 миллиард мс, что составляет 11 дней. Проблема в том, что время выполнения для двоичного поиска и простого поиска не растет с одинаковой скоростью .

Так как список чисел становится больше, бинарный поиск становится намного быстрее, чем простой поиск. То есть, по мере увеличения количества элементов, бинарный поиск занимает немного больше времени для запуска. Но для простого поиска требуется намного больше времени для запуска. Так как список чисел становится больше, бинарный поиск становится намного быстрее, чем простой поиск.

Поэтому недостаточно знать, как долго выполняется алгоритм для запуска - вам нужно знать, как увеличивается время работы по мере увеличения размера списка. Вот где появляется запись Big O.

Обозначение Big O позволяет сравнить количество операций

Например, предположим, что у вас есть список размеров n. Простой поиск требует проверки каждого элемента, поэтому он будет выполнять n операций. Время выполнения в нотации Big O равно O (n).

Где секунды?

Их нет - Big O не говорит вам скорость в секундах. Обозначение Big O позволяет сравнить количество операций. Он рассказывает вам, как быстро алгоритм растет.

</ Р

Наиболее частое время работы для алгоритмов

Список наиболее распространенных времен работы для алгоритмов с точки зрения нотации Big O. Вот пять раз, когда вы будете сталкиваться с большим количеством событий, которые сортируются от самых быстрых до самых медленных:

  1. O (log n), также известное как время регистрации . Пример: двоичный поиск.
  2. O (n), также известное как линейное время . Пример: простой поиск.
  3. O (n * log n) Пример: быстрый алгоритм сортировки, такой как quicksort (в главе 4).
  4. O (n 2) Пример: медленный алгоритм сортировки, такой как сортировка сортировки (см. Главу 2).
  5. На!) Пример: очень медленный алгоритм, например, путешествующий продавец (следующий следующий!).

В этой статье рассматриваются только основные понятия Big O. Для более подробного объяснения взгляните на их соответствующие руководства FreeCodeCamp для алгоритмов.

Больше информации