Bubble Алгоритъм за сортиране с Python използвайки Пример за списък

⚡ Умно обобщение

Bubble Сортирането подрежда елементите от списъка във възходящ ред, като многократно сравнява съседни стойности и ги разменяping ги, когато левият елемент е по-голям. Това лесно сортиране по сравнение е подходящо за малки или почти сортирани набори от данни и ефективно обучава основната логика на сортиране.

  • 🔁 Основен механизъм: BubblСортирането сравнява всяка двойка съседни елементи и ги разменя, като измества най-голямата несортирана стойност на крайната ѝ позиция след всяко преминаване.
  • Оптимизиран вариант: Променливата тип „флаг“ открива кога даден проход не прави размени, прекъсвайки цикъла рано, така че вече сортираният списък да завърши с едно сканиране.
  • 🐍 Python Изпълнение: Два вложени цикъла плюс временна променлива сортират списъка, а ръководството съпоставя всеки ред с точното му поведение.
  • 📊 Профил на сложност: Времевата сложност е O(n²) в най-лошия и средния случай, Ω(n) в най-добрия, с постоянно изискване за пространство O(1).
  • 🎯 Най-подходящо: BubblСортирането е отлично за обучение и почти сортирани списъци, но се представя зле при големи набори от данни в сравнение с напредналите алгоритми.

Bubble Алгоритъм за сортиране

Какво е Bubblд Сортиране?

Bubble Сортиране е алгоритъм за сортиране, използван за сортиране на елементи от списък във възходящ ред чрез сравняване на две съседни стойности. Ако първата стойност е по-висока от втората стойност, първата стойност заема позицията на втората стойност, докато втората стойност заема позицията на първата стойност. Ако първата стойност е по-ниска от втората стойност, тогава няма размяна.ping готово е.

Този процес се повтаря, докато всички стойности в списъка бъдат сравнени и сменени, ако е необходимо. Всяка итерация обикновено се нарича пропуск. Броят на преминаванията в балонно сортиране е равен на броя на елементите в списък минус един.

В този Bubblд Сортиране в 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) Създайте променлива flag, която следи дали има размяна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, ако условието е истина. Кодът не извежда нищо.
  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 на променлива резултат.
  16. Отпечатва стойността на променливата резултат.

Bubble sort предимства

Следните са някои от предимствата на алгоритъма за сортиране с мехурчета:

  • Лесно е за разбиране.
  • Представя се много добре, когато списъкът е вече или почти сортиран.
  • Не изисква обширна памет.
  • Лесно е да се напише кодът за алгоритъма.
  • Изискванията за пространство са минимални в сравнение с други алгоритми за сортиране.

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Сортирането е подходящо за малки или учебни примери, докато бързото сортиране и сортирането сливане обработват ефективно големи набори от данни от реалния свят.

Обобщете тази публикация с: