Zliczanie operacji za pomocą Big-O
Od stałej do kwadratowej złożoności prostymi słowami
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 + bCzas 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 += xCzas 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. 🎯
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
- Zliczanie operacji za pomocą Big-O
- Zasada orientacyjna 10^8
- Czytanie ograniczeń i wybór złożoności
- Dlaczego występuje TLE i jak je wykrywać