Competitive Programming Academy · Lekcja

Zliczanie operacji za pomocą Big-O

Od stałej do kwadratowej złożoności prostymi słowami

Lekcja 1 z 413 kroki

Zliczanie operacji za pomocą Big-O to bezpłatna lekcja Competitive Programming Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Competitive Programming Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Competitive Programming Academy zawiera 4 lekcji w sumie.

Dlaczego liczyć operacje

W konkursach szybkość ma znaczenie. Zamiast mierzyć czas działania kodu, szacuje się, ile kroków wykonuje. To oszacowanie nazywa się jego złożonością czasową. 🚀

Poznaj Big-O

Big-O opisuje, jak liczba operacji rośnie wraz ze wzrostem rozmiaru wejścia n. Pomija drobne szczegóły i skupia się na dominującym trendzie.

Czas stały O(1)

Jeśli nakład pracy nigdy nie zależy od n, mamy O(1). Odczyt jednego elementu listy lub wykonanie jednego dodawania zawsze zajmuje tyle samo czasu.

x = arr[0]
y = a + b

Czas liniowy O(n)

Jedna prosta pętla po n elementach ma złożoność O(n). Podwojenie rozmiaru wejścia oznacza mniej więcej podwojenie nakładu pracy. To podstawowe narzędzie codziennej pracy.

for x in arr:
    total += x

Czas kwadratowy O(n squared)

Pętla zagnieżdżona w pętli, obie wykonujące się dla n elementów, ma złożoność O(n^2). Dla n = 1000 oznacza to milion kroków, a później wzrost jest bardzo szybki.

for i in range(n):
    for j in range(n):
        check(i, j)

Czas logarytmiczny O(log n)

Gdy każdy krok zmniejsza problem o połowę, otrzymuje się O(log n). Wyszukiwanie binarne obsługuje miliard elementów w zaledwie około 30 krokach. ✨

Drabina wzrostu

Od najszybszego do najwolniejszego typowy rząd wygląda tak: O(1), O(log n), O(n), O(n log n), O(n^2). Im wyżej na tej liście, tym lepiej dana złożoność skaluje się wraz z danymi.

Pomiń stałe

Big-O pomija stałe współczynniki, więc O(2n) to po prostu O(n). Dwa przejścia nadal rosną liniowo, dlatego mnożnik nie zmienia klasy złożoności.

Zachowaj tylko największy składnik

Gdy składniki się sumują, liczy się tylko ten, który rośnie najszybciej. O(n^2 + n) upraszcza się do O(n^2), ponieważ wraz ze wzrostem n wartość n^2 zdecydowanie przewyższa n.

Sekwencyjne a zagnieżdżone

Dwie pętle wykonywane jedna po drugiej sumują się do O(n + n) = O(n). Dwie pętle zagnieżdżone mnożą się, dając O(n^2). To kształt pętli wskazuje właściwą złożoność.

Najpierw przypadek najgorszy

W konkursach ocenia się rozwiązanie na najtrudniejszym teście, dlatego należy rozumować o przypadku najgorszym. Należy założyć, że pętla wykona się w całości, a nie że wcześniej zakończy działanie.

Szybki test

Czas sprawdzić swoje wyczucie Big-O.

Podsumowanie

Można już odczytywać kod jako wzrost: O(1), O(n), O(n^2) i O(log n). Należy pomijać stałe, zachowywać największy składnik i myśleć o przypadku najgorszym. 🎯

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Zliczanie operacji za pomocą Big-O” jest bezpłatna?

Tak — pełny tekst „Zliczanie operacji za pomocą Big-O” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Competitive Programming Academy, przejdź na CoddyKit PRO. Kurs Competitive Programming Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zliczanie operacji za pomocą Big-O”?

Od stałej do kwadratowej złożoności prostymi słowami Ćwiczysz Competitive Programming Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Competitive Programming Academy?

Nie wymagamy żadnego doświadczenia. Competitive Programming Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Zliczanie operacji za pomocą Big-O”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Competitive Programming Academy?

Tak. Każda lekcja Competitive Programming Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Zliczanie operacji za pomocą Big-O
  2. Zasada orientacyjna 10^8
  3. Czytanie ograniczeń i wybór złożoności
  4. Dlaczego występuje TLE i jak je wykrywać
← Powrót do Competitive Programming Academy