Sobes.tech
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)$