Bubblе Алгоритм сортування с Python використовуючи приклад списку

⚡ Розумний підсумок

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

  • 🔁 Основний механізм: BubblСортування порівнює кожну пару суміжних елементів і міняє їх місцями, переміщуючи найбільше невідсортоване значення на його кінцеву позицію після кожного проходу.
  • Оптимізований варіант: Змінна-прапорець виявляє, коли прохід не виконує обмінів, розриваючи цикл раніше, щоб вже відсортований список завершився за одне сканування.
  • 🐍 Python Реалізація: Два вкладені цикли плюс тимчасова змінна сортують список, а покрокове керівництво відображає кожен рядок відповідно до його точної поведінки.
  • 📊 Профіль складності: Часова складність у найгіршому та середньому випадках становить O(n²), у найкращому — Ω(n), з постійною вимогою до простору O(1).
  • 🎯 Найкраще підходить: BubblСортування чудово підходить для навчання та майже відсортованих списків, але погано працює з великими наборами даних порівняно з просунутими алгоритмами.

Bubble Алгоритм сортування

Що таке? 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) Якщо значення не помінялися місцями, завершіть внутрішній цикл і продовжте роботу із зовнішнім циклом.

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

Візуальне уявлення

Враховуючи список із п'яти елементів, наведені нижче зображення ілюструють, як бульбашкове сортування перебирає значення під час їх сортування.

На наступному зображенні показано несортований список:

Bubble Сортувати несортований список

Перша ітерація

Крок 1)

Bubble Сортування за допомогою порівняння 21 та 6

Значення 21 і 6 порівнюються, щоб перевірити, яке з них більше за інше.

Bubble Сортування обміномping 21 і 6

21 більше за 6, тому 21 займає позицію, яку займає 6, тоді як 6 займає позицію, яку займав 21.

Bubble Сортувати змінений список після заміни

Наш змінений список тепер виглядає як наведений вище.

Крок 2)

Bubble Сортування за допомогою порівняння 21 та 9

Значення 21 і 9 порівнюються.

Bubble Сортування обміномping 21 і 9

21 більше за 9, тому ми міняємо місцями 21 та 9.

Bubble Сортувати новий список після заміни

Новий список тепер такий, як зазначено вище.

Крок 3)

Bubble Сортування за допомогою порівняння 21 та 33

Значення 21 і 33 порівнюються, щоб знайти більше.

Bubble Сортувати 33 більше ніж 21 без заміни

Значення 33 більше за 21, тому обмін неможливий.ping відбувається.

Крок 4)

Bubble Сортування за допомогою порівняння 33 та 3

Значення 33 і 3 порівнюються, щоб знайти більше.

Bubble Сортування обміномping 33 і 3

Значення 33 більше за 3, тому ми міняємо їх місцями.

Bubble Сортування відсортованого списку після першої ітерації

Відсортований список в кінці першої ітерації схожий на наведений вище.

Друга ітерація

Новий список після другої ітерації виглядає наступним чином:

Bubble Сортування списку після другої ітерації

Третя ітерація

Новий список після третьої ітерації виглядає наступним чином:

Bubble Сортування списку після третьої ітерації

Четверта ітерація

Новий список після четвертої ітерації виглядає наступним чином:

Bubble Сортування повністю відсортованого списку після четвертої ітерації

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Код програми сортування виглядає наступним чином:

Bubble Сортування Python пояснення коду

ТУТ,

  1. Визначає функцію bubbleSort, яка приймає параметр theSeq. Код нічого не виводить.
  2. Отримує довжину масиву та присвоює значення змінній n. Код нічого не виводить.
  3. Запускає цикл for, який виконує алгоритм сортування бульбашками (n – 1) разів. Це зовнішній цикл. Код нічого не виводить.
  4. Визначає змінну-прапорець, яка буде використовуватися для визначення того, чи відбулася зміна заміни. Це зроблено для цілей оптимізації. Код нічого не виводить.
  5. Запускає внутрішній цикл, який порівнює всі значення в списку від першого до останнього. Код нічого не виводить.
  6. Використовує оператор if, щоб перевірити, чи значення в лівій частині більше, ніж у безпосередній правій частині. Код нічого не виводить.
  7. Присвоює значення theSeq[j] часовій змінній tmp, якщо умова має значення true. Код нічого не виводить.
  8. Значення theSeq[j + 1] присвоюється позиції theSeq[j]. Код нічого не виводить.
  9. Значення змінної tmp присвоюється позиції theSeq[j + 1]. Код нічого не виводить.
  10. Змінній flag присвоюється значення 1, щоб вказати, що відбулася заміна. Код нічого не виводить.
  11. Використовує оператор if для перевірки, чи значення змінної flag дорівнює 0. Код нічого не виводить.
  12. Якщо значення дорівнює 0, ми викликаємо оператор break, який виходить із внутрішнього циклу.
  13. Повертає значення theSeq після його сортування. Код виводить відсортований список.
  14. Визначає змінну el, яка містить список випадкових чисел. Код нічого не виводить.
  15. Призначає значення функції bubbleSort змінній result.
  16. Виводить значення змінної результат.

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).

Поширені запитання

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

Так. Помічники зі штучним інтелектом можуть писати бульбашкове сортування в Python, Javaабо C++ і додати оптимізацію з прапорцями, яка зупиняється на ранній стадії відсортованого списку. Вони також можуть пропонувати швидші алгоритми, коли набір даних стає великим.

Це називається бульбашковим сортуванням, тому що більші значення поступово «спливають» до кінця списку з кожним проходом, подібно до бульбашок повітря, що піднімаються на поверхню води, тоді як менші значення опускаються до початку.

BubblСортування виконується за час O(n²), що набагато повільніше, ніж швидке сортування та сортування злиттям за час O(n log n). BubblСортування підходить для невеликих або навчальних прикладів, тоді як швидке сортування та сортування злиттям ефективно обробляють великі набори даних з реального світу.

Підсумуйте цей пост за допомогою: