Bubblе Алгоритм сортування с Python використовуючи приклад списку
⚡ Розумний підсумок
Bubble Сортування впорядковує елементи списку у порядку зростання шляхом багаторазового порівняння суміжних значень та їх обміну місцямиping їх, коли лівий елемент більший. Таке просте сортування порівнянням підходить для невеликих або майже відсортованих наборів даних та ефективно навчає основній логіці сортування.

Що таке? Bubble Сортувати?
Bubble Сортування — це алгоритм сортування, який використовується для сортування елементів списку у порядку зростання шляхом порівняння двох суміжних значень. Якщо перше значення більше за друге, перше значення займає позицію другого значення, а друге значення — позицію першого значення. Якщо перше значення менше за друге, то заміна не виконується.ping робиться.
Цей процес повторюється, доки всі значення в списку не будуть порівняні та замінені місцями, якщо необхідно. Кожну ітерацію зазвичай називають проходом. Кількість проходів у бульбашковому сортуванні дорівнює кількості елементів у списку мінус один.
В цьому Bubble Сортування в Python підручник ви дізнаєтеся про проблему, яку він вирішує, його оптимізовану форму, покрокове візуальне керівництво та робочий процес. Python програма та її характеристики продуктивності.
Впровадження Bubble Алгоритм сортування
Ми розділимо реалізацію на три (3) кроки, а саме: проблема, рішення та алгоритм, який ми можемо використовувати для написання коду для будь-якої мови.
Проблема
Список елементів наведено у випадковому порядку, і ми хотіли б розташувати їх упорядковано.
Розглянемо наступний список:
[21, 6, 9, 33, 3]
Рішення
Перебираємо список, порівнюючи два суміжні елементи та обмінюючись нимиping їх, якщо перше значення вище за друге значення.
Результат повинен бути таким:
[3, 6, 9, 21, 33]
Алгоритм
Алгоритм сортування бульбашками працює наступним чином:
Крок 1) Отримати загальну кількість елементів. Отримати загальну кількість елементів у заданому списку.
Крок 2) Визначте кількість зовнішніх проходів (n – 1), які потрібно виконати. Їхня довжина дорівнює списку мінус один.
Крок 3) Виконайте внутрішні проходи (n – 1) разів для зовнішнього проходу 1. Отримайте значення першого елемента та порівняйте його з другим значенням. Якщо друге значення менше за перше, то поміняйте місцями.
Крок 4) Повторюйте крок 3, доки не досягнете зовнішнього проходу (n – 1). Отримайте наступний елемент у списку, потім повторюйте процес, виконаний на кроці 3, доки всі значення не будуть розміщені у правильному порядку зростання.
Крок 5) Повернути результат після виконання всіх проходів. Повернути результати відсортованого списку.
Крок 6) Алгоритм оптимізації.
Уникайте непотрібних внутрішніх проходів, якщо список або суміжні значення вже відсортовано. Наприклад, якщо наданий список уже містить елементи, які були відсортовані в порядку зростання, тоді ми можемо розірвати цикл раніше.
Оптимізований Bubble Алгоритм сортування
За замовчуванням використовується алгоритм бульбашкового сортування Python порівнює всі елементи в списку незалежно від того, чи список уже відсортовано чи ні. Якщо заданий список уже відсортовано, порівняння всіх значень є марною тратою часу та ресурсів.
Оптимізація бульбашкового сортування допомагає нам уникнути непотрібних ітерацій і заощадити час і ресурси.
Наприклад, якщо перший і другий елементи вже відсортовано, то немає потреби переглядати решту значень. Ітерація припиняється, і починається наступна, доки процес не завершиться, як показано нижче Bubble Приклад сортування.
Оптимізація виконується за допомогою таких кроків:
Крок 1) Створіть змінну-прапорець, яка відстежує наявність будь-яких замінping сталося у внутрішньому циклі.
Крок 2) Якщо значення помінялися місцями, переходьте до наступної ітерації.
Крок 3) Якщо значення не помінялися місцями, завершіть внутрішній цикл і продовжте роботу із зовнішнім циклом.
Оптимізоване бульбашкове сортування ефективніше, оскільки воно виконує лише необхідні кроки та пропускає непотрібні.
Візуальне уявлення
Враховуючи список із п'яти елементів, наведені нижче зображення ілюструють, як бульбашкове сортування перебирає значення під час їх сортування.
На наступному зображенні показано несортований список:
Перша ітерація
Крок 1)
Значення 21 і 6 порівнюються, щоб перевірити, яке з них більше за інше.
21 більше за 6, тому 21 займає позицію, яку займає 6, тоді як 6 займає позицію, яку займав 21.
Наш змінений список тепер виглядає як наведений вище.
Крок 2)
Значення 21 і 9 порівнюються.
21 більше за 9, тому ми міняємо місцями 21 та 9.
Новий список тепер такий, як зазначено вище.
Крок 3)
Значення 21 і 33 порівнюються, щоб знайти більше.
Значення 33 більше за 21, тому обмін неможливий.ping відбувається.
Крок 4)
Значення 33 і 3 порівнюються, щоб знайти більше.
Значення 33 більше за 3, тому ми міняємо їх місцями.
Відсортований список в кінці першої ітерації схожий на наведений вище.
Друга ітерація
Новий список після другої ітерації виглядає наступним чином:
Третя ітерація
Новий список після третьої ітерації виглядає наступним чином:
Четверта ітерація
Новий список після четвертої ітерації виглядає наступним чином:
Python прикладів
Наступний код показує, як реалізувати Bubble Алгоритм сортування в Python.
def bubbleSort(theSeq): n = len(theSeq) for i in range(n - 1): flag = 0 for j in range(n - 1): if theSeq[j] > theSeq[j + 1]: tmp = theSeq[j] theSeq[j] = theSeq[j + 1] theSeq[j + 1] = tmp flag = 1 if flag == 0: break return theSeq el = [21, 6, 9, 33, 3] result = bubbleSort(el) print(result)
Виконання наведеної вище програми бульбашкового сортування в Python дає такі результати:
[3, 6, 9, 21, 33]
Code Пояснення
Пояснення до Python BubblКод програми сортування виглядає наступним чином:
ТУТ,
- Визначає функцію bubbleSort, яка приймає параметр theSeq. Код нічого не виводить.
- Отримує довжину масиву та присвоює значення змінній n. Код нічого не виводить.
- Запускає цикл for, який виконує алгоритм сортування бульбашками (n – 1) разів. Це зовнішній цикл. Код нічого не виводить.
- Визначає змінну-прапорець, яка буде використовуватися для визначення того, чи відбулася зміна заміни. Це зроблено для цілей оптимізації. Код нічого не виводить.
- Запускає внутрішній цикл, який порівнює всі значення в списку від першого до останнього. Код нічого не виводить.
- Використовує оператор if, щоб перевірити, чи значення в лівій частині більше, ніж у безпосередній правій частині. Код нічого не виводить.
- Присвоює значення theSeq[j] часовій змінній tmp, якщо умова має значення true. Код нічого не виводить.
- Значення theSeq[j + 1] присвоюється позиції theSeq[j]. Код нічого не виводить.
- Значення змінної tmp присвоюється позиції theSeq[j + 1]. Код нічого не виводить.
- Змінній flag присвоюється значення 1, щоб вказати, що відбулася заміна. Код нічого не виводить.
- Використовує оператор if для перевірки, чи значення змінної flag дорівнює 0. Код нічого не виводить.
- Якщо значення дорівнює 0, ми викликаємо оператор break, який виходить із внутрішнього циклу.
- Повертає значення theSeq після його сортування. Код виводить відсортований список.
- Визначає змінну el, яка містить список випадкових чисел. Код нічого не виводить.
- Призначає значення функції bubbleSort змінній result.
- Виводить значення змінної результат.
Bubblпереваги сортування
Нижче наведено деякі переваги алгоритму сортування бульбашками:
- Це легко зрозуміти.
- Він працює дуже добре, коли список вже або майже відсортований.
- Він не вимагає великої пам'яті.
- Написати код для алгоритму легко.
- Вимоги до простору мінімальні порівняно з іншими алгоритмами сортування.
Bubble sort Недоліки
Нижче наведено деякі недоліки алгоритму сортування бульбашками:
- Він погано працює під час сортування великих списків. Це займає надто багато часу та ресурсів.
- Він здебільшого використовується для академічних цілей, а не для реального застосування.
- Кількість кроків, необхідних для сортування списку, має порядок n2.
Аналіз складності Bubble Сортування
Існує три типи складності:
1) Складність сортування
Складність сортування використовується для вираження часу виконання та простору, необхідного для сортування списку. Бульбашкове сортування виконує (n – 1) ітерацій для сортування списку, де n – загальна кількість елементів у списку.
2) Часова складність
Часова складність бульбашкового сортування дорівнює O(n2).
Часові складності можна класифікувати як:
- Найгірший випадок – тут представлений список у порядку спадання. Алгоритм виконує максимальну кількість виконань, яка виражається як [Big-O] O(n2).
- Найкращий випадок – це відбувається, коли наданий список вже відсортовано. Алгоритм виконує мінімальну кількість виконань, яка виражається як [Big-Omega] Ω(n).
- Середній випадок – це відбувається, коли список у випадковому порядку. Середня складність представлена як [Big-theta] ⊝(n2).
3) Просторова складність
Просторова складність вимірює обсяг додаткового простору, необхідного для сортування списку. Бульбашкове сортування вимагає лише одного (1) додаткового простору для часової змінної, що використовується для swap.ping значення. Отже, його просторова складність становить O(1).
















