Урок 43. Сортування своїми руками
Урок 43. Сортування своїми руками
Section titled “Урок 43. Сортування своїми руками”Тривалість: 45–60 хв
Рівень: Algorithm Explorer
🎯 Місія
Section titled “🎯 Місія”Зрозумій сортування, реалізувавши простий алгоритм вручну.
🧠 Ключова ідея
Section titled “🧠 Ключова ідея”for i in range(len(numbers)): for j in range(len(numbers) - 1): if numbers[j] > numbers[j + 1]: numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Це Bubble Sort — “пухирчате” сортування. Уяви, що найбільші числа “спливають” нагору, як повітряні бульбашки у воді. Ми порівнюємо два сусідні числа і міняємо їх місцями, якщо вони не в правильному порядку.
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”for i in range(len(numbers))— зовнішній цикл: скільки разів проходимо по спискуfor j in range(len(numbers) - 1)— внутрішній цикл: порівнюємо сусідівif numbers[j] > numbers[j + 1]— лівий більший за правий?numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]— міняємо місцями!
Приклад: перший прохід
Section titled “Приклад: перший прохід”numbers = [5, 3, 8, 1]# Порівнюємо: 5>3 → міняємо → [3, 5, 8, 1]# Порівнюємо: 5<8 → OK → [3, 5, 8, 1]# Порівнюємо: 8>1 → міняємо → [3, 5, 1, 8]# Після 1-го проходу: 8 "спливла" на місце!graph TD
A["[5, 3, 8, 1]"] --> B{"5 > 3?"}
B -- Так --> C["[3, 5, 8, 1]"]
B -- Nie --> C
C --> D{"5 > 8?"}
D -- Nie --> E["[3, 5, 8, 1]"]
E --> F{"8 > 1?"}
F -- Так --> G["[3, 5, 1, 8]"]
G --> H["8 на місці! Наступний прохід..."]
✏️ Основні завдання
Section titled “✏️ Основні завдання”- Пройди алгоритм на папері.
- Сортуй за зростанням.
- Сортуй за спаданням.
- Порахуй порівняння.
🙋 Підказка до завдання 3: зміни > на < у рядку порівняння.
⭐ Challenge
Section titled “⭐ Challenge”Відсортуй список гравців-словників за score без sorted().
🧪 Перед запуском
Section titled “🧪 Перед запуском”Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.
🐞 Debug Mission
Section titled “🐞 Debug Mission”Навмисно зламай одну частину програми. Прочитай traceback або спостережи неправильну поведінку, знайди причину й виправ її.
✅ Урок завершено, якщо Марко може
Section titled “✅ Урок завершено, якщо Марко може”- пояснити головну ідею своїми словами;
- виконати основні завдання без копіювання готового рішення;
- змінити програму під нову вимогу;
- знайти й виправити хоча б одну власну помилку.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.
💡 Підказка для дорослого
Section titled “💡 Підказка для дорослого”Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»