arrow_backНазад до польових записів
OFFENSIVE Опубліковано 29 Jul 2026

Big O Notation: What A-Level CS Actually Expects

Практичний розбір Big O нотації для A-level комп'ютерної науки з розв'язаними прикладами та порадами щодо екзаменів.

Big O нотація з'являється в кожній основній специфікації A-level комп'ютерної науки (AQA, OCR, Edexcel) і збиває з пантелику багатьох студентів не тому, що математика складна, а тому, що вони ніколи не бачили її пов'язаною з реальним кодом. Це практичний розбір того, що вам потрібно знати й як відповідати на екзаменаційні питання без зайвих слів.

Що Big O насправді вимірює

Big O описує, як час виконання (або використання пам'яті) алгоритму зростає зі збільшенням розміру вхідних даних, зазвичай позначеного як n. Це не вимірювання на секундомірі в секундах. Це спосіб описати темп зростання, щоб порівнювати алгоритми незалежно від обладнання.

Коли ви пишете O(n), ви кажете: якщо я подвою вхідні дані, робота приблизно подвоїться. O(n²) означає, що подвоєння вхідних даних приблизно учетверто збільшує роботу. Це співвідношення — те, що перевіряють екзаменатори, не точна кількість операцій.

Складності, які потрібно знати напам'ять

Для A-level це ті, що з'являються знову й знову:

  • O(1) – константний час. Доступ до елемента масиву за індексом: arr[5]. Не має значення, наскільки великий масив.
  • O(log n) – логарифмічна. Двійковий пошук на відсортованому списку. Кожен крок скорочує простір пошуку вдвічі.
  • O(n) – лінійна. Один цикл через список, як лінійний пошук, який перевіряє кожен елемент один раз.
  • O(n log n) – лінеарифмічна. Merge sort і quicksort (у середньому випадку) потрапляють сюди.
  • O(n²) – квадратична. Вкладені цикли на одних і тих же даних, що це робить bubble sort, insertion sort і selection sort.
  • O(2ⁿ) – експоненціальна. Наївна рекурсивна Фібоначчі без мемоїзації. Швидко стає некрасивою.

Ви повинні мати змогу подивитися на псевдокод і розпізнати, яка це складність з першого погляду, тому що це в основному те, що тестується.

Читання коду для визначення складності

Метод, який працює кожного разу: лічіть цикли й подивіться, як вони пов'язані з n.

# O(n) - один цикл, один прохід
for i in range(n):
    print(i)

# O(n^2) - вкладений цикл, обидва прив'язані до n
for i in range(n):
    for j in range(n):
        print(i, j)

# O(log n) - простір пошуку скорочується вдвічі на кожній ітерації
low, high = 0, n - 1
while low <= high:
    mid = (low + high) // 2
    if target == arr[mid]:
        break
    elif target < arr[mid]:
        high = mid - 1
    else:
        low = mid + 1

Вкладений цикл, де діапазон внутрішнього циклу залежить від n, все ще O(n²), навіть якщо виглядає трохи інакше (як for j in range(i) замість for j in range(n) — це все ще квадратична загалом, просто з різницею в константному множнику).

Уважайте на цикли, що не залежать від n взагалі. Цикл, який завжди виконується 10 разів незалежно від розміру вхідних даних, це O(1), навіть якщо цикл присутній. Екзаменатори люблять це ховати.

Поширені алгоритми сортування та їхня Big O

Це улюблена тема екзамену, тому що поєднує дві специфікації одночасно: алгоритми сортування та складність.

АлгоритмНайкращий випадокНайгірший випадок
Bubble sortO(n)O(n²)
Insertion sortO(n)O(n²)
Merge sortO(n log n)O(n log n)
Binary searchO(1)O(log n)
Linear searchO(1)O(n)

Постійність Merge sort (однакова складність у найкращому й найгіршому випадках) варто явно згадати, якщо питання запитує, чому ви оберете його замість bubble sort для великих наборів даних. Найкращий випадок bubble sort O(n) застосовується тільки з оптимізацією раннього виходу, коли жодних обмінів не відбувається на проходженні — згадайте цю деталь, якщо ви про це говорите, тому що деякі екзаменаційні комісії це очікують.

Де студенти втрачають бали

Найголовніше: писання

Написано з допомогою штучного інтелекту, перевірено та опубліковано Мішалем Пільчем (CISSP), Korra Studio.

Готові йти далі?

Це одна замітка з бази знань Korra Studio — платформа поєднує кожну тему з 1-на-1 менторингом.

Початок безплатноarrow_forward