Алгоритми впорядкування масиву
За навчальною програмою 2017 року
Урок 56
Інформатика 9
teach-inf.com.ua
за підручником
Ривкінд Й.Я. та ін.
Впорядкування одновимірного масиву�методом обміну
Розглянемо алгоритм впорядкування одновимірного масиву методом обміну. Будемо, як і в попередньому алгоритмі, впорядковувати масив за зростанням.
Для пояснення ідеї цього алгоритму розглянемо для прикладу також невпорядкований масив з 6 чисел.
13 | 6 | 5 | 18 | 11 | 10 |
Братимемо по черзі два сусідні елементи масиву (перший і другий, другий і третій, третій і четвертий і т.д.) і, якщо лівий з них більше правого, обмінюватимемо їх місцями.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
Беремо перший і другий елементи масиву: 13 і 6, 13>6, тому обмінюємо їх місцями і отримаємо такий масив:
6 | 13 | 5 | 18 | 11 | 10 |
Беремо другий і третій елементи масиву: 13 і 5, 13>5, тому обмінюємо їх місцями і отримаємо такий масив:
6 | 5 | 13 | 18 | 11 | 10 |
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
Беремо третій і четвертий елементи масиву: 13 і 18, 13 не більше 18, тому не обмінюємо їх місцями і масив залишається той самий.
Беремо четвертий і п’ятий елементи масиву: 18 і 11, 18>11, тому обмінюємо їх місцями і отримаємо такий масив:
6 | 5 | 13 | 11 | 18 | 10 |
Беремо п’ятий і шостий елементи масиву: 18 і 10, 18>10, тому обмінюємо їх місцями і отримаємо такий масив:
6 | 5 | 13 | 11 | 10 | 18 |
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
У результаті першого проходу по масиву найбільший елемент масиву стає останнім і займає своє місце в майбутньому впорядкованому масиві. Тому в подальшому впорядкуванні попередній до нього елемент порівнювати з ним вже не потрібно.
Далі потрібно повторити цей процес, починаючи з першого елемента масиву.
Тоді після другого проходу по масиву два останні елементи займуть свої місця в майбутньому впорядкованому масиві:
5 | 6 | 11 | 10 | 13 | 18 |
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
І так далі.
5 | 6 | 10 | 11 | 13 | 18 |
Усього потрібно зробити 5 проходів по масиву. На останньому проході свої місця займуть одразу два елементи. Після чого отримаємо впорядкований за зростанням масив.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
Складемо фрагмент проєкту для впорядкування за зростанням одновимірного масиву з 6 дійсних чисел, що вводяться з клавіатури, методом обміну.
a = list(map(float, input
('Уведіть 6 чисел через пропуск > ').split()))
# уведення значень елементів списку з 6 дійсних чисел
for i in range(5): # 5 разів повторюємо прохід по списку
for j in range(5-i): # порівнюємо кожну пару сусідніх елементів
# від першого елементу масиву до останнього у
# невпорядкованій частині масиву
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
Продовження…
if a[j]>a[j+1]: # якщо лівий з двох сусідніх елементів
# більше правого з них
x = a[j] # обмінюємо два сусідні елементи місцями,
# використовуючи допоміжну змінну х
a[j] = a[j+1]
a[j+1] = x
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
Впорядкування одновимірного масиву�методом обміну
Продовження…
Спробуйте це зробити разом з однокласником/однокласницею. Це значно прискорює виконання алгоритму, якщо масив є частково впорядкованим, а особливо, якщо лише окремі його елементи стоять не на своїх місцях.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
Продовження…
елементи одновимірного масиву «спливають» в його кінці: спочатку найбільший, потім найбільший серед тих, що залишилися і т.д.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Впорядкування одновимірного масиву�методом обміну
Продовження…
youtu.be/lyZQPjUT5B4
toptal.com/developers/
sorting-algorithms
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Які методи упорядкування можна використати в мові програмування Python?
У мові програмування Python для сортування списку використовують метод.
За замовчуванням метод сортує елементи списку в порядку зростання значень. Метод може змінити порядок сортування за допомогою таких іменованих аргументів:
sort ()
аргумент, який дає змогу визначити власну функцію порівняння при виклику методу sort (). Ця функція отримує один єдиний аргумент і повертає значення, яке буде використовуватися в операції порівняння;
key
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Які методи упорядкування можна використати в мові програмування Python?
Продовження…
аргумент, який використовується для вказівки порядку сортування елементів.
Якщо reverse = True, то елементи списку сортуються в порядку спадання.
reverse
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Які методи упорядкування можна використати в мові програмування Python?
Програмний код
Результат
А = ['a', 'b', 'd', 'f', 'n', 'v']
В = [1, 2, 3, 5, 8, 10]
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Які методи упорядкування можна використати в мові програмування Python?
Для зміни порядку елементів списку на зворотній у вже відсортованому списку використовують метод реверсування списку reverse ().
Програмний код
Результат
A = [5, 4, 3, 2, 1]
B = ['a', 'b', 'c', 'd', 'е', 'f']
© Вивчаємо інформатику 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, с. 262-265
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Працюємо за комп’ютером
Сторінка
268
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 5.3
Дякую за увагу!
За навчальною програмою 2017 року
Урок 56
Інформатика 9
teach-inf.com.ua
за підручником
Ривкінд Й.Я. та ін.