Junior
163
Каква е времевата сложност на сортирането с балончета?
Отговор от AI
sobes.tech AI
В най-лошите и средни случаи времевата сложност е $O(n^2)$, където $n$ е броят на елементите в списъка. В най-добрия случай (когато списъкът вече е сортиран), е $O(n)$.
# Функция за сортиране чрез мехурчета
def bubble_sort(arr):
n = len(arr)
# Обхождане на всички елементи на масива
for i in range(n):
# Флаг за оптимизация: ако по време на преминаване няма разменени елементи, списъкът е сортиран
swapped = False
# Последните i елемента вече са на мястото си
for j in range(0, n-i-1):
# Ако текущият елемент е по-голям от следващия, ги разменяме
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped = True
# Ако по време на преминаването няма разменени елементи, излизаме
if not swapped:
break
return arr
# Примери за използване
# Най-лош случай (обърнато сортиран списък)
arr_worst = [5, 4, 3, 2, 1]
bubble_sort(arr_worst) # Извършват се n*(n-1)/2 сравнения и разменяния
# Среден случай (случаен списък)
arr_average = [3, 1, 4, 1, 5, 9, 2, 6]
bubble_sort(arr_average) # Средно, броят на сравненията и размените е пропорционален на n^2
# Най-добър случай (сортиран списък)
arr_best = [1, 2, 3, 4, 5]
bubble_sort(arr_best) # Благодарение на оптимизацията, се извършва само един преминаване, с n сравнения
| Сценарий | Времева сложност |
|---|---|
| Най-лош случай | $O(n^2)$ |
| Среден случай | $O(n^2)$ |
| Най-добър случай | $O(n)$ |