Bubble Алгоритъм за сортиране с Python използвайки Пример за списък
⚡ Умно обобщение
Bubble Сортирането подрежда елементите от списъка във възходящ ред, като многократно сравнява съседни стойности и ги разменяping ги, когато левият елемент е по-голям. Това лесно сортиране по сравнение е подходящо за малки или почти сортирани набори от данни и ефективно обучава основната логика на сортиране.
Какво е 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) Ако стойностите не са разменили позициите си, прекратете вътрешния цикъл и продължете с външния цикъл.
Оптимизираното балонно сортиране е по-ефективно, тъй като изпълнява само необходимите стъпки и пропуска тези, които не са необходими.
Визуално представяне
Като се има предвид списък от пет елемента, следващите изображения илюстрират как сортирането с мехурчета итерира през стойностите при сортирането им.
Следното изображение показва несортирания списък:
Първа итерация
Стъпка 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, ако условието е истина. Кодът не извежда нищо.
- Стойността на theSeq[j + 1] се присвоява на позицията на theSeq[j]. Кодът не извежда нищо.
- Стойността на променливата tmp се присвоява на позиция theSeq[j + 1]. Кодът не извежда нищо.
- На променливата flag се присвоява стойност 1, за да се покаже, че е извършена размяна. Кодът не извежда нищо.
- Използва if оператор, за да провери дали стойността на променливата flag е 0. Кодът не извежда нищо.
- Ако стойността е 0, тогава извикваме оператора break, който излиза от вътрешния цикъл.
- Връща стойността на theSeq, след като е била сортирана. Кодът извежда сортирания списък.
- Дефинира променлива el, която съдържа списък от произволни числа. Кодът не извежда нищо.
- Присвоява стойността на функцията bubbleSort на променлива резултат.
- Отпечатва стойността на променливата резултат.
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).

















