Конструктор уроків
1
Створення масиву.
Написати програму, яка генерує випадковий список цілих чисел (наприклад, від 1 до 100) довжиною N, де N вводить користувач.
Сортування масиву.
Реалізувати один із методів сортування (наприклад, бульбашкове сортування або сортування вибором).
Пошук у масиві.
Реалізувати два способи пошуку:
Лінійний пошук (перевіряє кожен елемент послідовно).
Бінарний пошук (працює тільки на відсортованих масивах).
Перевірка роботи.
Вивести початковий та відсортований масиви.
Запросити у користувача число для пошуку.
Вивести, чи є число в масиві, та його індекс (або повідомити, що його немає).
2

3
Введіть розмір масиву: 10
Початковий масив: [45, 23, 78, 10, 89, 54, 32, 11, 67, 91]
Відсортований масив: [10, 11, 23, 32, 45, 54, 67, 78, 89, 91]
Введіть число для пошуку: 32
Лінійний пошук: Число 32 знайдено на позиції 3
Бінарний пошук: Число 32 знайдено на позиції 3
4
Що таке бінарний пошук?
Бінарний пошук – це ефективний алгоритм пошуку елемента в відсортованому масиві. Він працює за принципом "розділяй і володарюй", що дозволяє швидко знаходити потрібний елемент, зменшуючи діапазон пошуку вдвічі на кожному кроці.
Беремо середній елемент масиву.
Порівнюємо його з шуканим значенням:
Якщо співпав – готово! 🎯
Якщо менший – шукаємо в правій половині.
Якщо більший – шукаємо в лівій половині.
Повторюємо кроки 1-2, поки не знайдемо елемент або не залишиться частин для пошуку.
Припустимо, у нас є масив:
[2, 5, 8, 12, 16, 23, 38, 56, 72, 91]
Хочемо знайти число 23.
✅ 1. Беремо середній елемент → 16 (посередині).
23 більше за 16 → шукаємо в правій половині [23, 38, 56, 72, 91].
✅ 2. Беремо середину цієї частини → 56.
23 менше за 56 → шукаємо в лівій половині [23, 38].
✅ 3. Беремо середній → 38.
23 менше за 38 → залишився тільки [23].
✅ 4. Ось він! 🎉 Число знайдено!
🚀 Швидкість – працює за O(log n), що набагато ефективніше за звичайний пошук O(n).
📉 Менше порівнянь – порівнюємо не кожен елемент, а тільки логарифмічну кількість разів.
❗ ВАЖЛИВО – бінарний пошук працює тільки на відсортованих масивах!
🔹 Досі не зрозуміло?
5
Лінійний пошук – це найпростіший алгоритм пошуку елемента в списку. Він працює за принципом "перевіряй кожен елемент по черзі", поки не знайдемо потрібне значення або не дійдемо до кінця списку.
Беремо перший елемент масиву.
Порівнюємо його з шуканим значенням:
Якщо співпав – вітаю! 🎉 Ми його знайшли.
Якщо ні – переходимо до наступного.
Продовжуємо цей процес, поки не знайдемо значення або не переглянемо весь список.
Припустимо, у нас є масив:
[2, 5, 8, 12, 16, 23, 38, 56, 72, 91]
Хочемо знайти число 23.
✅ 1. Порівнюємо з 2 – не підходить.
✅ 2. Порівнюємо з 5 – не підходить.
✅ 3. Порівнюємо з 8 – не підходить.
✅ 4. Порівнюємо з 12 – не підходить.
✅ 5. Порівнюємо з 16 – не підходить.
✅ 6. Порівнюємо з 23 – 🎉 Знайшли!
✔ Працює на будь-якому списку (не потрібно сортувати).
✔ Простий у реалізації – можна написати за кілька рядків коду.
❌ Повільний для великих масивів – працює за O(n), тобто в гіршому випадку доведеться перевірити всі n елементів.
Алгоритм | Коли краще використовувати? | Швидкість |
|---|---|---|
Лінійний пошук | Дані не відсортовані або коли елементів мало. | O(n) |
Бінарний пошук | Дані відсортовані, потрібно швидко знайти елемент. | O(log n) |
💡 Підсумок:
Лінійний пошук – це метод "йти по порядку, доки не знайдемо". Простий, але може бути повільним, якщо елементів багато.
6
Сортування бульбашкою – це один із найпростіших алгоритмів сортування, який працює за принципом "бульбашок у воді":
🔹 Великі значення "спливають" вгору (в кінець списку), а малі опускаються вниз (на початок).
🔹 Повторюємо цей процес, поки список не стане відсортованим.
Переглядаємо масив зліва направо.
Порівнюємо два сусідні елементи.
Якщо лівий більший за правий → міняємо місцями.
Якщо ні → залишаємо як є.
Продовжуємо так до кінця масиву → найбільший елемент опиняється в кінці.
Повторюємо процес для решти елементів, ігноруючи вже відсортовані частини.
Закінчуємо, коли не було жодної заміни (масив відсортований).
[5, 3, 8, 4, 2]
🔄 1-й прохід:
(5, 3) → 5 > 3 → 🔄 міняємо → [3, 5, 8, 4, 2]
(5, 8) → 5 < 8 → ✅ залишаємо
(8, 4) → 8 > 4 → 🔄 міняємо → [3, 5, 4, 8, 2]
(8, 2) → 8 > 2 → 🔄 міняємо → [3, 5, 4, 2, 8]
🔄 2-й прохід:
(3, 5) → 3 < 5 → ✅ залишаємо
(5, 4) → 5 > 4 → 🔄 міняємо → [3, 4, 5, 2, 8]
(5, 2) → 5 > 2 → 🔄 міняємо → [3, 4, 2, 5, 8]
(5, 8) → ✅ залишаємо
🔄 3-й прохід:
(3, 4) → ✅ залишаємо
(4, 2) → 4 > 2 → 🔄 міняємо → [3, 2, 4, 5, 8]
🔄 4-й прохід:
(3, 2) → 3 > 2 → 🔄 міняємо → [2, 3, 4, 5, 8]
📌 Масив відсортований! 🎉
❌ Найгірший випадок: O(n²) (коли масив повністю не відсортований)
✅ Найкращий випадок: O(n) (якщо масив уже відсортований)
⚠️ Працює повільно для великих масивів, але дуже простий у реалізації.
✅ Коли масив маленький.
✅ Коли треба простий алгоритм для навчання.
❌ Не підходить для великих даних – краще використовувати швидке сортування (QuickSort) або сортування злиттям (MergeSort).
7

8

9

10

Рефлексія від 10 учнів
Сподобався:
Так: 10
Ні: 0
Зрозумілий:
Так: 9
Ні: 1
Потрібні роз'яснення:
Ні: 9
Так: 1