Skip to content

Latest commit

 

History

History
81 lines (53 loc) · 4.22 KB

README.md

File metadata and controls

81 lines (53 loc) · 4.22 KB

вернуться к оглавлению

Глава 1. Знакомство с алгоритмами

ВРЕМЯ ВЫПОЛНЕНИЯ АЛГОРИТМА

O(log n) (Логарифмическое)

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

Элементов Попыток
128 7
1024 10

Алгоритмы: бинарный поиск

O(n) (Линейное)

Чтобы точно найти ответ, нужно перебрать все элементы массива,
то есть сделать n операций.

Элементов Попыток
100 100
1000 1000

Алгоритмы: простой поиск

O(n * log n)

Алгоритмы: эффективные алгоритмы сортировки (быстрая сортировка).

O(n2)

Алгоритмы: медленные алгоритмы сортировки (сортировка выбором).

O(n!)

Для получения ответа требуется просмотреть все комбинации всех элементов
(количество перестановок - n!).
Краткое описание задачи о коммивояжере - предположим коммивояжер хочет побывать
в 5 городах так, чтобы при этом проехать минимальное общее расстояние
Одно из возможных решений: нужно перебрать все возможные комбинации порядка
объезда городов, чтобы найти наименьшую длину пути.
Для 5 городов это будет - 120 вариантов, для 6 - 720, для 7 - 5040

Элементов Попыток
5 120
7 5040

Алгоритмы: очень медленные алгоритмы (задача о коммивояжере)

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

Скорость алгоритмов измеряется не в секундах, а в темпе роста количества операций.

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

БИНАРНЫЙ ПОИСК

Бинарный поиск - алгоритм поиска элемента в отсортированном массиве.
Он делит массив на две части, берет "центральный" элемент, сравнивает его значение
с искомым - и на основании этого сравнения отбрасывает одну из двух частей. Таким образом,
область поиска каждый раз сокращается вдвое.
Важное условие: массив значений должен быть отсортирован.
Время выполнения: логарифмическое - O(log n)

Код бинарного поиска в этой папке