← до розділу

Лінійний проти бінарного пошуку

Обидва алгоритми шукають те саме число в тому самому впорядкованому масиві. Лінійний перевіряє елементи по черзі, бінарний щоразу дивиться в середину й відкидає половину.

Пошук

Лінійний пошук

Бінарний пошук

Масив і шукане число

Кроки залежно від n

лінійний, найгірше: nбінарний, найгірше: ⌊log₂ n⌋ + 1ваш поточний пошук

Як рахує модель

Крок – одне порівняння шуканого числа з елементом масиву.
Лінійний: i = 0, 1, 2, … доки a[i] ≠ x. Найгірше – n кроків, у середньому ≈ n/2. Масив не мусить бути впорядкованим.
Бінарний: межі [ліво; право], mid = ⌊(ліво + право) / 2⌋. Якщо a[mid] < x – ліво = mid + 1, якщо більше – право = mid − 1. Найгірше ⌊log₂ n⌋ + 1 кроків.
Умова бінарного пошуку: масив упорядкований. Сортування коштує O(n log n), тож воно окупається, коли шукаємо багато разів.

Що спробувати

Чому так?

Кожен крок бінарного пошуку відкидає половину кандидатів: n → n/2 → n/4 → … → 1. Скільки разів можна поділити n навпіл – це і є log₂ n. Тому мільйон елементів переглядаються за 20 кроків, а мільярд – за 30.

Лінійний пошук простіший і працює на будь-якому масиві, але його час росте пропорційно n: удвічі більше даних – удвічі довше.

Шкільна програма: інформатика, 8–11 клас (алгоритми пошуку, складність алгоритмів).