Kolokwium

Zakres materiału obowiązującego na kolokwium

Ćwiczenia 1

Przykłady implementacji struktur listowych dostępne są w repozytorium z materiałami do przedmiotu.

1.1 Tablica, std::array, std::vector

  • podstawowe operacje na tablicy/wektorze i ich złożoność:

    • dostęp,

    • wstawianie elementu (na końcu/w środku),

    • usuwanie elementu (z końca/ze środka),

    • wyszukiwanie elementu o określonej wartości

  • różnica między std::vector::size() a std::vector::capacity(),

  • wykorzystanie iteratorów

1.2 Lista jedno- i dwukierunkowa

  • podstawowe operacje na liście i ich złożoność:

    • dostęp,

    • wstawianie elementu,

    • usuwanie elementu,

    • wyszukiwanie elementu o określonej wartości

  • wyszukiwanie ze strażnikiem

1.3 Kolejka (FIFO), stos (LIFO)

  • pojęcie abstrakcyjnego typu danych (abstract data type, ADT),

  • kolejka i stos jako przykłady ADT,

  • implementacja funkcjonalności kolejki i stosu na bazie listy dwukierunkowej

1.4 Binarne drzewo poszukiwań (BST)

  • drzewo binarne, definicja, podstawowe własności,

  • binarne drzewo poszukiwań (binary search tree, BST):

    • podstawowe operacje i ich złożoność:

      • dostęp,

      • wyszukiwanie elementu,

      • wstawianie elementu,

      • usuwanie elementu

    • przechodzenie po węzłach drzewa:

      • in-order,

      • pre-order,

      • post-order

    • implementacja iteratora dla drzewa

Ćwiczenia 2

Przykładowe implementacje omawianych algorytmów sortowania dostępne są w repozytorium z materiałami do przedmiotu.

2.1 Algorytmy sortowania

Algorytmy:

  • sortowanie przez wybieranie (selection sort),

  • sortowanie przez wstawianie (insertion sort),

  • sortowanie bąbelkowe (bubble sort),

  • sortowanie szybkie (quicksort),

  • sortowanie przez scalanie (merge sort),

  • sortowanie przez kopcowanie (heapsort),

  • sortowanie kubełkowe (bucket sort)

Dla przedstawionych algorytmów:

  • implementacja,

  • złożoność czasowa (najlepsza, średnia, najgorsza),

  • złożoność pamięciowa,

  • stabilność

Ćwiczenia 3

3.1 Drzewa

  • drzewa BST zrównoważone i niezrównoważone,

  • rotacje drzew,

  • drzewa splay:

    • implementacja i złożoność obliczeniowa:

      • operacja splay,

      • wyszukiwanie elementu,

      • wstawianie elementu,

      • usuwanie elementu,

    • zastosowania drzewa splay, zalety i wady

  • drzewa AVL:

    • wysokość, współczynnik wyważenia,

    • operacje równoważenia drzewa AVL,

    • implementacja i złożoność obliczeniowa:

      • wyszukiwanie elementu,

      • wstawianie elementu,

      • usuwanie elementu

Ćwiczenia 4

Przykładowe implementacje omawianych kopców dostępne są w repozytorium z materiałami do przedmiotu.

4.1 Kopce

  • kolejka priorytetowa (priority queue, ADT),

  • kopiec binarny:

    • własność kopca min-heap, max-heap,

    • reprezentacja tablicowa kopca (implicit data structure),

    • implementacja i złożoność obliczeniowa operacji:

      • dostęp do najmniejszego elementu,

      • wstawianie nowego elementu,

      • usuwanie najmniejszego elementu,

      • budowa kopca:

        • metoda Williamsa (sukcesywne wstawianie elementów),

        • metoda Floyda (przywracanie własności kopca dla tablicy)

  • kopce d-arne:

    • 3-heap (ternary heap) i 4-heap (quaternary heap),

    • zalety i wady zastosowania arności wyższego rzędu,

  • kopiec dwumianowy:

    • kopiec dwumianowy jako przykład kopca złączalnego (mergeable heap),

    • własności kopca dwumianowego,

    • implementacja i złożoność obliczeniowa operacji:

      • dostęp do najmniejszego elementu,

      • wstawianie nowego elementu,

      • usuwanie najmniejszego elementu,

      • scalanie kopców

  • kopiec Fibonacciego:

    • implementacja i złożoność obliczeniowa operacji:

      • dostęp do najmniejszego elementu,

      • wstawianie nowego elementu,

      • usuwanie najmniejszego elementu,

      • scalanie kopców

Last updated