Dziś pokażę Ci coś, co jest jednocześnie banalne i genialne, sortowanie bąbelkowe, czyli Bubble Sort. Może nie jest to Usain Bolt wśród algorytmów, ale za to świetny nauczyciel. Idealny pierwszy algorytm do zrozumienia, jak działa sortowanie „od kuchni”.
Gotowy? Zapnij pasy. Zanurkujmy w świat bąbelków!
O co chodzi z tymi bąbelkami?
Wyobraź sobie, że masz szereg kulek z numerkami np. 5, 3, 8, 2, 1.
Chcesz je ułożyć rosnąco, jak grzeczne kaczuszki od najmniejszej do największej. Bubble sort robi to bardzo prostym (żeby nie powiedzieć: naiwnym) sposobem:
👉 Porównuje sąsiednie kulki i jeśli są w złej kolejności, zamienia je miejscami.
👉 Potem przechodzi do kolejnej pary i znowu: porównuje, zamienia.
👉 Tak aż do końca listy.
👉 I od początku znowu.
👉 Aż nic nie trzeba będzie już zamieniać.
To jak przeglądanie talii kart i wymienianie ze sobą tych, które są niepoukładane. Po każdej rundzie największy element „wypływa” na koniec to jak bąbelek w wodzie 💧
OK, koniec teorii, a teraz kod!
Oto klasyczna implementacja sortowania bąbelkowego w pythonie:
def bubble_sort(lista):
n = len(lista)
for i in range(n):
zamiana = False
for j in range(n - i - 1):
if lista[j] > lista[j + 1]:
lista[j], lista[j + 1] = lista[j + 1], lista[j]
zamiana = True
if not zamiana:
break # lista już posortowana i nie ma sensu dalej sprawdzaćTeraz spróbujmy go użyć:
liczby = [5, 3, 8, 2, 1] bubble_sort(liczby) print(liczby) # 👉 [1, 2, 3, 5, 8]
Jeżeli chcesz się pobawić tym kodem nie instalując u siebie żadnych terminali bądź zabawek, skorzystaj z edytora pythona online -> https://www.online-python.com/. Wrzucasz kod i możesz na żywo podglądać zmiany.
Jak działa sortowanie bąbelkowe w kodzie pythona?
n - i - 1bo po każdej rundzie największy element jest już na końcu, więc nie trzeba go dalej ruszać.
- zamiana = False i to mały trik: jeśli w całym przebiegu nie było żadnej zamiany, to znaczy, że lista już jest OK. Możemy zakończyć szybciej.
lista[j], lista[j + 1] = lista[j + 1], lista[j]to sprytna wymiana zmiennych w Pythonie. Kocham ten język 😄
Ale przecież Python ma sorted()… Po co to komu?
Doskonałe pytanie!
Tak, Python ma super szybkie wbudowane sortowanie (sorted() i .sort()), ale:
💡 Pisząc bubble sorta uczysz się:
- jak działa iteracja,
- jak porównywać i zamieniać dane,
- jak optymalizować pętle,
- jak myśleć algorytmicznie!
To jak nauka jazdy na rowerze z kółkami. Kiedyś ich nie będziesz potrzebować, ale na początku to one pozwolą Ci zrozumieć, o co chodzi z tym całym algorytmicznym światem.
Zadanie dla Ciebie
Na rozgrzewkę, spróbuj sam:
Dodaj
print()w środku pętli, żeby zobaczyć, jak dane się zmieniają krok po kroku.Zaimplementuj
bubble_sort()od zera bez podglądania kodu.Zrób wersję malejącą (od największych do najmniejszych).
Czy używać tego w realnym projekcie?
Nie. Nie rób tego 😄
Bubble sort ma złożoność O(n²) [https://pl.wikipedia.org/wiki/Asymptotyczne_tempo_wzrostu], czyli jest wolny jak Internet przez modem 56k. Do prawdziwej pracy mamy Timsort (to właśnie robi sorted() w Pythonie). Ale jako nauka? Bezcenna.
Podsumowanie
Bubble sort to taki pierwszy rowerek każdego programisty, może i nie na wyścigi, ale za to nauczy Cię równowagi (algorytmicznej!).
Napisz swojego własnego bąbelkowego potworka i pochwal się nim gdzieś tutaj w komentarzu pod tym postem 🚀

Nikt jeszcze nie komentował. Bądź pierwszy!