нотация
(big-O) нотация используется для описания верхней асимптотической границы времени исполнения алгоритма.
В анализе алгоритмов, зачастую дает оценку времени выполнения в наихудшем случае, показывая, что алгоритм не будет расти быстрее заданного предела при увеличении размера входных данных.
не описывает типичное или среднее время выполнение работы, однако дает верхний предел асимптотического роста.
пример:
Время выполнения алгоритма Quicksort имеет верхнюю асимптотическую границу .
В наихудшем случае, когда на вход подается обратно отсортированный массив (или при постоянном неудачном выборе опорного элемента), время выполнения Quicksort вырастет квадратично относительно размера входа.
Это значит, что асимптотически Quicksort не будет выполнять свою работу медленнее чем ни при каких вводных данных.
нотация
(Omega) нотация используется для описания нижний асимптотической границы исполнения алгоритма.
задает минимальный асимптотический порядок роста, ниже которого время исполнения алгоритма не может опуститься при увеличении входных данных.
пример:
Quicksort имеет нижнюю асимптотическую границу , то есть алгоритм не может иметь асимптотический рост менее, чем .
notation
(Theta) нотация описывает точную (тесную) границу асимптотического роста времени исполнения алгоритма.
Она комбинирует и , описывая насколько быстро растет время исполнения алгоритма для определенного случая.
- Если , тогда
- Если , тогда мы описываем по отдельности
- лучший случай
- средний случай
- худший случай
пример:
Quicksort
Поэтому:
- лучший случай
- средний случай
- худший случай
Mergesort
Поэтому:
- (нет нужды в описании разных случаев)