Helpers / Grade 1 / Algorytms

Алгоритмы

Визуализация алгоритмов
https://www.toptal.com/developers/sorting-algorithms


оригинал https://github.com/TalkoDenis/interviews/tree/main/Algorithms

Нотация О-большое

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

Одним из основных инструментов для оценки времени работы служит асимптотическая нотация, также известная как Большое О (Big O).

Время работы алгоритмов от меньшего к большему:

O(1) - постоянное время. Описывает алгоритмы, у которых время выполнения не зависит от размера входных данных. Например, доступ к элементу массива по индексу.

O(log n) - логарифмическое время. Описывает алгоритмы, у которых время выполнения растет логарифмически по отношению к размеру входных данных. Например, бинарный поиск в отсортированном массиве.

O(n) - линейное время. Описывает алгоритмы, у которых время выполнения линейно зависит от размера входных данных. Например, просмотр всех элементов в несортированном массиве.

O(n log n) - линейное-логарифмическое время. Характерно для эффективных алгоритмов сортировки, таких как быстрая сортировка или сортировка слиянием.

O(n^2) - квадратичное время. Описывает алгоритмы, у которых время выполнения пропорционально квадрату размера входных данных. Такие алгоритмы часто встречаются во вложенных циклах.

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