Podstawy programowania

Co to jest algorytm?
Wyjaśnienie, które zostaje w głowie

Każdy program komputerowy to algorytm w działaniu. Zanim napiszesz pierwszą linię kodu, musisz zrozumieć czym jest algorytm, dlaczego ma kluczowe znaczenie i jak go czytać. Z wizualizacjami i przykładami w 5 językach.

TP
Tomasz Puchała
nauczyciel informatyki
· 30 marca 2026 · ~12 min czytania
algorytmy podstawy python javascript php INF.03

Zanim napiszesz w życiu choćby jeden program, musisz zrozumieć jedno pojęcie. Nie język programowania. Nie składnię. Nie IDE. Algorytm. Bo język możesz zmienić w tydzień. Myślenie algorytmiczne zostaje z tobą na zawsze.

Najprostsza definicja, jaką znam

Algorytm to przepis na rozwiązanie problemu — dokładna lista kroków, które wykonujesz po kolei, żeby dostać konkretny wynik.

Algorytm jest niezależny od języka programowania. To logika. Kod to tylko jej zapis w języku, który rozumie komputer.

Ten sam algorytm możesz zapisać w Pythonie, PHP, C albo Javie — będzie działał identycznie. Dlatego zanim zaczniesz pisać kod, najpierw powinieneś mieć algorytm. Programiści, którzy tego nie rozumieją, piszą kod metodą prób i błędów. Ci, którzy rozumieją — piszą go z głową.

Algorytmy są wszędzie

Nie musisz być programistą, żeby korzystać z algorytmów. Robisz to od lat. GPS wyznaczający trasę, Instagram decydujący co ci pokazać, Spotify układający playlist — to wszystko algorytmy. Ale też codzienniejsze rzeczy:

// analogie z życia
Algorytmy, których używasz codziennie
Każdy z poniższych przykładów ma dane wejściowe, konkretne kroki i wynik. To właśnie algorytm.
Parzenie kawy
Wejście: ziarna, woda. Wyjście: kawa. Kroki zawsze takie same.
1
Zagotuj wodę do 92°C
2
Wsyp kawę do filtra
3
Zalej, poczekaj 4 minuty
4
Gotowe — nalej i pij
🗺️
Nawigacja GPS
Wejście: start i cel. Wyjście: najkrótsza trasa. Miliony obliczeń w sekundę.
1
Pobierz punkt startowy i cel
2
Sprawdź dostępne drogi
3
Oblicz koszty każdej trasy
4
Zwróć najtańszą
📚
Szukanie w słowniku
Jak szukasz — od A, czy otwierasz w połowie? To dwa różne algorytmy.
1
Otwórz słownik w połowie
2
Czy słowo jest przed czy za?
3
Odrzuć połowę stron
4
Powtarzaj aż znajdziesz

Trzy cechy każdego dobrego algorytmu

Możesz nazwać coś algorytmem tylko wtedy, kiedy spełnia trzy warunki. Jeśli brakuje choćby jednego — to nie algorytm, tylko mniej lub bardziej sensowna lista kroków.

1. Skończoność

Algorytm musi się kiedyś zakończyć. Brzmi oczywisto, ale to jeden z częstszych błędów w kodzie — nieskończona pętla. Program, który nigdy nie kończy pracy, jest bezużyteczny.

2. Jednoznaczność

Każdy krok musi być precyzyjny — zero miejsca na domysły. Instrukcja "zagotuj wodę" jest OK. "Podgrzej trochę" — nie, bo każdy zrozumie to inaczej. Komputer nie zgaduje intencji.

3. Skuteczność

Algorytm musi dawać poprawny wynik dla każdego poprawnego wejścia. Nie dla większości przypadków — dla wszystkich.

Dla egzaminu INF.03: Cechy algorytmu to stały temat zadań. Pamiętaj: skończoność, jednoznaczność, skuteczność. Czasem dodaje się też dane wejściowe i dane wyjściowe jako osobne cechy.

Schemat blokowy — algorytm na rysunku

Zanim zapiszesz algorytm w kodzie, często rysuje się go jako schemat blokowy. Każdy kształt ma konkretne znaczenie. To język wizualny — zrozumiały niezależnie od tego czy piszesz w Pythonie czy w C.

// schemat blokowy
Algorytm: czy liczba jest parzysta?
Operator modulo (%) zwraca resztę z dzielenia. Jeśli N % 2 == 0, liczba jest parzysta.
START
Pobierz liczbę N
N % 2 == 0 ?
TAK ✓
Wypisz "Parzysta"
NIE ✗
Wypisz "Nieparzysta"
KONIEC
Owalna — START lub KONIEC
Prostokąt — operacja, obliczenie, wejście/wyjście
Romb — warunek, decyzja (dwie ścieżki: TAK / NIE)
Strzałka — kierunek przepływu
Wskazówka: Na egzaminie INF.03 zadania często polegają na narysowaniu schematu blokowego lub odczytaniu co robi podany schemat. Ćwicz oba kierunki.

Sortowanie bąbelkowe — klasyczny przykład

Bubble Sort to jeden z pierwszych algorytmów, które poznaje każdy programista. Nie dlatego, że jest szybki — bo nie jest. Ale dlatego, że jego logika jest tak prosta, że można ją wytłumaczyć słowami.

Zasada: porównujemy każdą parę sąsiednich elementów. Jeśli są w złej kolejności — zamieniamy je miejscami. Powtarzamy to dla całej listy tyle razy, ile potrzeba. Po każdym przejściu największy nieposortowany element "wypływa" na koniec — jak bąbelek w wodzie.

Uwaga na złożoność: Bubble Sort ma złożoność O(n²). Dla 1000 elementów to milion operacji. W praktyce używaj sort() wbudowanego w język — to jest szybki algorytm (zazwyczaj Timsort lub Quicksort). Bubble Sort to narzędzie do nauki, nie do produkcji.
// interaktywna wizualizacja
Bubble Sort — krok po kroku
Naciśnij Start żeby zobaczyć jak elementy "wypływają" na swoje miejsca.

Wyszukiwanie binarne — mądrze, nie na siłę

Wyobraź sobie, że szukasz słowa "zupa" w słowniku. Możesz kartkować od litery A — zajmie ci to wieki. Albo możesz otworzyć na środku, sprawdzić czy "zupa" jest przed czy za, i odrzucić połowę stron. Powtórzyć to kilka razy i być przy "zupie" po 4-5 ruchach.

To właśnie Binary Search. Jeden warunek: lista musi być posortowana. Jeśli jest — możesz znaleźć element spośród miliona w 20 krokach. Nie w milion. W 20. To jest siła złożoności O(log n).

// interaktywna wizualizacja
Binary Search — zawęź zakres
Tablica: [2, 5, 8, 12, 16, 23, 38, 42, 55, 61, 72, 88] — posortowana rosnąco.
Wpisz liczbę i kliknij Szukaj

Złożoność obliczeniowa — dlaczego liczy się szybkość

Dwa algorytmy mogą dawać identyczny wynik, ale jeden robi to w milisekundy, a drugi... nigdy nie kończy przy dużych danych. Notacja O() mówi ci jak czas działania rośnie wraz z liczbą danych.

Przykład: dla 1000 elementów algorytm O(n) wykona 1000 operacji. Algorytm O(n²) wykona ich milion. O(log n) — tylko 10. Przy 10 milionach elementów ta różnica jest już życiowa.

// notacja O()
Złożoność obliczeniowa — ściągawka
Ile operacji dla n = 1000 elementów?
Notacja Nazwa n=1000 Ocena Przykład
O(1) Stały czas 1 świetny Dostęp do tablicy po indeksie
O(log n) Logarytmiczny ~10 świetny Binary Search
O(n) Liniowy 1 000 dobry Liniowe przeszukiwanie listy
O(n log n) Quasi-liniowy ~10 000 dobry Merge Sort, Quick Sort, Timsort
O(n²) Kwadratowy 1 000 000 wolny Bubble Sort, Selection Sort
O(2ⁿ) Wykładniczy 10³⁰⁰ katastrofa Brute-force łamania haseł

Kod — ten sam algorytm w 5 językach

Teraz czas zobaczyć jak wygląda to w prawdziwym kodzie. Wybierz algorytm i język — logika jest identyczna, zmienia się tylko składnia. To jest najważniejsza lekcja tej sekcji.

// przykłady kodu
Ten sam algorytm, różne języki
Logika nie zmienia się — zmienia się tylko sposób jej zapisu.
parzystosc.py

Gdzie iść dalej?

Ten artykuł to wstęp. Algorytmy to temat na lata. Ale kilka konkretnych kroków na najbliższy czas:

Dobry programista nie zna na pamięć wszystkich algorytmów. Rozumie kiedy i dlaczego dany algorytm zastosować.

Algorytmy wracają wszędzie — na rozmowach rekrutacyjnych, przy optymalizacji kodu, przy projektowaniu baz danych. Im szybciej zbudujesz ten fundament, tym łatwiej będzie ci rozumieć wszystko co przyjdzie potem.