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()
astd::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