Sobes.tech
Junior
164

Mi a buborékrendezés időbeli komplexitása?

Válasz az MI-től

sobes.tech MI

A legrosszabb és közepes esetekben az időbonyolultság $O(n^2)$, ahol $n$ a lista elemeinek száma. A legjobb esetben (amikor a lista már rendezett), ez $O(n)$.

# Buborékrendező függvény
def bubble_sort(arr):
    n = len(arr)
    # Az összes elem átvizsgálása
    for i in range(n):
        # Jelző az optimalizáláshoz: ha egy átmenet során nem volt csere, a lista rendezett
        swapped = False
        # Az utolsó i elem már a helyén
        for j in range(0, n-i-1):
            # Ha az aktuális elem nagyobb, mint a következő, cseréljük
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        # Ha egy átmenet során nem volt csere, kilépünk
        if not swapped:
            break
    return arr

# Használati példák
# Legrosszabb eset (fordított sorrendű lista)
arr_worst = [5, 4, 3, 2, 1]
bubble_sort(arr_worst) # n*(n-1)/2 összehasonlítás és csere történik

# Átlagos eset (véletlenszerű lista)
arr_average = [3, 1, 4, 1, 5, 9, 2, 6]
bubble_sort(arr_average) # Átlagosan a összehasonlítások és cserék száma is arányos n^2-vel

# Legjobb eset (rendezett lista)
arr_best = [1, 2, 3, 4, 5]
bubble_sort(arr_best) # Az optimalizációnak köszönhetően csak egy átmenet történik, n összehasonlítással
Szcenárió Időbonyolultság
Legrosszabb eset $O(n^2)$
Átlagos eset $O(n^2)$
Legjobb eset $O(n)$