Інформація про новину
  • Переглядів: 662
  • Дата: 2-02-2022, 08:56
2-02-2022, 08:56

32. Алгоритми впорядкування масиву в Python

Категорія: Інформатика





Попередня сторінка:  31. Опрацювання елементів списку в Python
Наступна сторінка:   33. Об’єкти класу Listbox в Python

Методи сортування масивів

Під час опрацювання таблиць часто виникає потреба впорядкувати дані в таблиці за деякою ознакою. Числові дані можна відсортувати за величиною (наприклад, розташування в масиві значень маси деталей за зростанням), рядкові дані — в алфавітному порядку (упорядкування списку учнів). Сортування елементів масиву — це впорядкування їх за деякою ознакою.

Клас List у Python має метод sort(), який упорядковує список за зростанням. Якщо потрібно упорядкувати елементи масиву за спаданням, після сортування застосовують метод reverse().

ПРИКЛАД 1. Упорядкувати елементи списку arr за незростанням.

# a = [81, 45, 23, 21, 12, 8, 7, 6, 4, 3]

Щоб зрозуміти сутність алгоритмів сортування, розглянемо два найпростіші методи сортування масиву. Нехай потрібно впорядкувати елементи списку arr із 10 елементів за неспаданням:

Сортування вибором максимального елемента

Алгоритм сортування вибором полягає в пошуку на неопрацьованому зрізі списку максимального значення і подальшому обміні цього значення з останнім елементом неопрацьованого зрізу. На наступному кроці неопрацьований зріз зменшується на один елемент.

Алгоритм сортування (див. рисунок):

• Відшукати максимальний елемент у зрізі arr[0: 9].

• Максимальний елемент цього зрізу поміняти місцями з arr[9].

• Відшукати максимальний елемент у зрізі arr[0: 8].

• Максимальний елемент цього зрізу поміняти місцями з arr[8].

<...>

Максимальний елемент зрізу arr[0: 1]. Поміняти місцями з arr[1].

Реалізуємо алгоритм у вигляді функції. Список arr заповнимо 10 випадковими числами.

# При кожній ітерації циклу переглядається зріз [0: k]

# Знайшли максимальний елемент у зрізі arr[0: k]

# Визначили індекс максимального елемента

# Максимальний елемент поміняли місцями з останнім у зрізі

# Заповнення списку випадковими числами

# Виклик функції сортування

Сортування обміном (метод бульбашки)

Метод бульбашки — це метод упорядкування списку шляхом

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

У процесі виконання цього алгоритму елементи з великими значеннями опиняються в кінці списку, а елементи з меншими значеннями поступово переміщуються у напрямку до початку списку. Образно кажучи, важкі елементи падають на дно, а легкі повільно спливають подібно до бульбашок повітря.

Змінна prap типу bool виконує роль прапорця. Вона отримує значення True в тому випадку, якщо відбулася хоча б одна перестановка сусідніх елементів. Якщо значення prap не змінилось, це означає, що елементи списку вже впорядковані й подальший перегляд списку не потрібний.

Реалізуємо алгоритм у вигляді функції.

ПРИКЛАД 2. Проаналізуємо виконання алгоритму на прикладі списку arr = [5, 10, 1, 4, 6].

Уже на третій ітерації елементи виявились упорядкованими за зростанням, змінна prap = False, тому зовнішній цикл припиняє роботу. Для різних наборів значень списку може знадобитися різна кількість кроків сортування.

Питання для самоперевірки

1. У чому полягає сутність сортування методом вибору максимального елемента?

2. У чому полягає сутність сортування методом бульбашки?

3. Де може знаходитися найбільший елемент списку, якщо список не впорядковано?

4. Де може знаходитися найменший елемент списку, якщо список упорядковано за зростанням; за спаданням?

5.

Для кожної пари сусідніх елементів

списку а виконується операція

Початкове значення s дорівнює 0. Визначте, чому дорівнює кінцеве значення s, якщо список:

а) було впорядковано за зростанням;

б) було впорядковано за спаданням;

в) не було впорядковано.

6. Дано список результатів забігу на 100 м восьми спортсменів. Складіть програму для визначення трьох кращих результатів.

Вправа 32

Скласти програму для розв’язування задачі.

Задача. У фігурному катанні загальна оцінка якості виконання елемента обчислюється як усічене середнє оцінок, даних 9 суддями. Для цього відкидаються найвища і найнижча оцінки, а з решти обчислюється середнє арифметичне. Складіть програму для визначення оцінки за цими правилами.

1) Створіть Python file із назвою Оцінки. Завантажте модуль random:

import random

2) Створіть порожній список grades.

3) Додайте до списку 9 випадкових чисел з інтервалу (4, 6). Щоб згенерувати випадкове дійсне число, викличте метод random.uniform(4, 6) і округліть згенероване число до 1 десяткового знаку:

Виведіть список на екран.

4) Упорядкуйте список. Виведіть упорядкований список на екран.

5) Знайдіть середнє арифметичне елементів, що утворюють зріз списку згідно з умовою задачі.

6) Виведіть результат з одним десятковим знаком.

Комп’ютерне тестування

Виконайте тестове завдання 32 з автоматичною перевіркою результату.

 

 

Це матеріал з підручника Інформатика 9 клас Бондаренко 2022

 




Попередня сторінка:  31. Опрацювання елементів списку в Python
Наступна сторінка:   33. Об’єкти класу Listbox в Python



^