← Materiały

Algorytmy i Struktury Danych

Ćwiczenia z algorytmiki w Pythonie. Od zmiennych i typów, przez listy, słowniki, klasy i listę z dowiązaniami, po rekurencję, sortowanie, drzewa, grafy i wyszukiwanie wzorca w tekście. Pracujesz w notatniku Jupyter.

UEP · studia stacjonarne I stopnia · ćwiczenia · 2026/27

PythonAlgorytmyStruktury danychZłożonośćGrafy

Program — 11

  1. 01

    Organizacja i pierwsze kroki w Pythonie

    Zasady zaliczenia i program. Potem pierwszy notatnik Jupyter: zmienne jako etykiety, typy, operatory, warunek, funkcje, print kontra return i styl PEP 8.

  2. 02

    Listy

    Indeksy i wycinki, zmiany i ich trzy pułapki, kopie i referencje. Lista pod maską: pomiar pamięci i czasu, złożoność, stos i kolejka. Ćwiczenie na kartkach, bez komputera.

  3. 03

    Słowniki, krotki i zbiory

    Słownik i funkcja skrótu, czyli szafa z szufladami. Krotka i jej pułapka, zbiory na diagramach Venna, wyrażenia składane i JSON. Która struktura do którego zadania.

  4. 04

    Struktury zaawansowane

    Notacja O i szukanie binarne z pomiarem. Kolejka dwustronna, Counter na inwokacji „Pana Tadeusza”, kopiec i kolejka priorytetowa z remisami, przeszukiwanie wszerz.

  5. 05

    Programowanie obiektowe

    Wszystko jest obiektem. Klasa i obiekt, self i __init__, reprezentacja tekstowa, atrybut klasy i pułapka wspólnej listy, dziedziczenie, metody specjalne i dataclass.

  6. 06

    Lista z dowiązaniami

    Budujesz własną listę z węzłów: wstawianie i usuwanie krok po kroku, złożoność w porównaniu z listą Pythona, pomiar czasu i pamięci. Co siedzi w deque i OrderedDict, lista dwukierunkowa.

  7. 07

    Funkcje, moduły i dobre praktyki

    Parametry nazwane i domyślne, pułapka listy jako wartości domyślnej, *args i **kwargs. Gdzie Python szuka nazwy (LEGB), funkcja jako argument key, własny moduł i blok __main__. Zen Pythona i kod, który przeczyta ktoś inny.

  8. 08

    Zapis algorytmu, wyszukiwanie i rekurencja

    Jeden algorytm w czterech zapisach: słowa, pseudokod, schemat blokowy i Python. Wyszukiwanie liniowe i binarne na milionie liczb, rekurencja i stos wywołań, Fibonacci przyspieszony zapamiętywaniem wyników.

  9. 09

    Sortowanie

    Bąbelkowe, przez wybieranie i przez wstawianie krok po kroku, potem scalanie i quicksort. Porównujesz algorytmy liczbą porównań, bez stopera, i sprawdzasz, dlaczego n log n to granica. Sortowanie przez zliczanie ją omija.

  10. 10

    Drzewa i grafy

    Na start mosty Królewca. Drzewo binarne poszukiwań, jego zdegenerowana wersja i cztery sposoby przejścia drzewa. Graf jako słownik i macierz, BFS kontra DFS, najkrótsza droga algorytmem Dijkstry z kopcem.

  11. 11

    Wyszukiwanie wzorca w tekście

    Ile razy w „Panu Tadeuszu” pada słowo „Tadeusz”? Szukanie naiwne i jego najgorszy przypadek, algorytm Horspoola z tabelą przesunięć, str.find. Wyrażenia regularne i wzorzec, który potrafi zawiesić program.