Алгоритми впорядкування масиву
За навчальною програмою 2017 року
Урок 55
Інформатика 9
teach-inf.com.ua
за підручником
Ривкінд Й.Я. та ін.
Алгоритми впорядкування одновимірних масивів. Поняття складності алгоритму
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Одновимірний масив вважається впорядкованим, якщо серед значень його елементів встановлено певний порядок. Наведемо кілька прикладів впорядкованих одновимірних масивів:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Продовження…
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Продовження…
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Розрізняють 4 види впорядкованості одновимірного масиву за значеннями його елементів:
Зростанням
Неспаданням
Спаданням
Незростанням
якщо значення елементів не повторюються
якщо значення елементів можуть повторюватись
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Одновимірний масив a називається впорядкованим за зростанням (зростаючим), якщо значення кожного його наступного елемента більше значення попереднього, тобто для всіх і виконується нерівність:
a[i+1] > a[i]
Наприклад, впорядкованим за зростанням (зростаючим) є масив:
5; 12; 32; 44,5; 88; 101
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Одновимірний масив a називається впорядкованим за спаданням (спадним), якщо значення кожного його наступного елемента менше значення попереднього, тобто для всіх і виконується нерівність:
a[i+1] < a[i]
Наприклад, впорядкованим за спаданням (спадним) є масив:
45; 32; 22; 4,5; 0; –7
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Одновимірний масив a називається впорядкованим за неспаданням (неспадним), якщо значення кожного його наступного елемента не менше (більше або дорівнює) значення попереднього, тобто для всіх і виконується нерівність:
a[i+1] ≥ a[i]
Наприклад, впорядкованим за неспаданням (неспадним) є масив:
15; 22; 22; 34; 40; 40
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядковані одновимірні масиви
Одновимірний масив a називається впорядкованим за незростанням (незростаючим), якщо значення кожного його наступного елемента не більше (менше або дорівнює) значення попереднього, тобто для всіх і виконується нерівність:
a[i+1] ≤ a[i]
Наприклад, впорядкованим за незростанням (незростаючим) є масив:
35; 12; 12; 7; 7; 1
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Алгоритми впорядкування�одновимірних масивів
Таких алгоритмів існує досить багато. Ми розглянемо два з них:
Алгоритми перетворення невпорядкованих одновимірних масивів у впорядковані називаються алгоритмами впорядкування (сортування) одновимірних масивів.
впорядкування
методом вибору
впорядкування
методом обміну
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Розглянемо алгоритм впорядкування одновимірного масиву методом вибору. Будемо впорядковувати масив за зростанням.
23 | 7 | 4 | 16 | -2 | 10 |
Пояснимо ідею цього алгоритму на прикладі.
Нехай маємо такий одновимірний масив з 6 чисел. Він невпорядкований.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Виберемо найменший елемент масиву (це – число -2)
23 | 7 | 4 | 16 | -2 | 10 |
Обміняємо його місцями з першим елементом масиву.
-2 | 7 | 4 | 16 | 23 | 10 |
Отримаємо масив, у якому перший елемент є найменшим серед усіх елементів масиву. Тобто перший елемент вже зайняв своє місце в майбутньому впорядкованому масиві:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Виберемо найменший елемент невпорядкованої частини масиву (це – число 4)
Обміняємо його місцями з першим елементом невпорядкованої частини масиву (це – число 7).
-2 | 4 | 7 | 16 | 23 | 10 |
Отримаємо масив, у якому перші два елементи масиву впорядковані за зростанням. Тобто вони вже зайняли своє місце в майбутньому впорядкованому масиві:
-2 | 7 | 4 | 16 | 23 | 10 |
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Знову виберемо найменший елемент невпорядкованої частини масиву (це – число 7)
Обміняємо його місцями з першим елементом невпорядкованої частини масиву (це в даному випадку – те саме число 7).
-2 | 4 | 7 | 16 | 23 | 10 |
У даному випадку вони співпали. І ми отримаємо масив, у якому перші три елементи масиву впорядковані за зростанням. Тобто вони вже зайняли своє місце в майбутньому впорядкованому масиві:
-2 | 4 | 7 | 16 | 23 | 10 |
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Ще раз виберемо найменший елемент невпорядкованої частини масиву (це – число 10) і обміняємо його місцями з першим елементом невпорядкованої частини масиву (це – число 16). Отримаємо такий масив:
-2 | 4 | 7 | 10 | 23 | 16 |
В якому перші чотири елементи зайняли своє місце в майбутньому впорядкованому масиві.
Ще один раз виконаємо ці операції, і отримаємо впорядкований за зростанням одновимірний масив:
-2 | 4 | 7 | 10 | 16 | 23 |
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Отже, ми мали одновимірний масив з 6 чисел. І ми 5 разів виконували такі дії:
Звертаємо вашу увагу, що на останньому кроці виконання алгоритму свої місця зайняли одразу два елементи масиву.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Складемо фрагмент проєкту для впорядкування за зростанням списку з 6 дійсних чисел, що вводяться з клавіатури, методом вибору.
a = list(map(float, input
('Уведіть 6 чисел через пропуск > ').split()))
# уведення значень елементів списку з 6 дійсних чисел
for i in range(5): # 5 разів повторюємо
min = a[i] # перший елемент невпорядкованої
# поки що частини списку вважаємо найменшим
nmin = i # номер першого елемента невпорядкованої
# поки що частини списку вважаємо номером
# найменшого
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Продовження…
for j in range(i+1, 6): # переглядаємо елементи списку,
# починаючи з наступ ного і до останнього, можливо
# серед них є менший, ніж той, який ми на даний
# момент вважаємо найменшим у невпорядкованій
# частині
if a[j]<min: # якщо зустрічається елемент, менший ніж
# той, який ми вважаємо найменшим у
# невпорядкованій частині списку, він стає
# найменшим і його номер стає номером найменшого
min = a[j]
nmin = j
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Продовження…
a[nmin] = a[i] # на місце знайденого найменшого
# елемента невпорядкованої поки що
# частини списку ставимо перший елемент
# невпорядкованої частини списку
a[i] = min # на місце першого елемента
# невпорядкованої поки що частини списку
# ставимо знайдений найменший
print(a) # виведення впорядкованого списку
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Звертаємо вашу увагу:
Для цього необхідно внести певні зміни у фрагмент проєкту. Обговоріть з однокласником/однокласницею які саме це зробити.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Продовження…
Переконайтеся в цьому разом з однокласником/
однокласницею на прикладі масиву:
12; 4; 6; 2; 6; 4.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом вибору
Продовження…
youtu.be/Ns4TPTC8whw
toptal.com/developers/
sorting-algorithms
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Дайте відповіді на запитання
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Розгадайте ребус
Сортування
«Ребуси українською» © rebus1.com
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Домашнє завдання
Проаналізувати
§ 5.3, с. 258-262
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Працюємо за комп’ютером
Сторінка
267-268
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Дякую за увагу!
За навчальною програмою 2017 року
Урок 55
Інформатика 9
teach-inf.com.ua
за підручником
Ривкінд Й.Я. та ін.