Politechnika Wrocławska, Wydział Elektroniki, Kierunek: Informatyka (1 rok)
Laboratorium INE 2001 - ALGORYTMY I STRUKTURY DANYCH 2 prow. dr Marek Piasecki |
Uwaga: Przygotowane przez wykładowcę dr Zofię Kruczkiewicz: treści zadań wraz z przykładowymi programami sortowania i wyszukiwania (które można wykorzystać jako materiały pomocnicze) są dostępne w laboratoriach ICT 127L/127P/103/104 C-3, w katalogu: L:\kruczkiewicz\INF2001
LABORATORIUM nr 1
Powtórzenie wybranych algorytmów sortowania poznanych w poprzednim
semestrze:
bąbelkowego, przez selekcję, przez wstawianie, przez zliczanie,
pozycyjnego, szybkiego oraz kopcowego.
Należy wybrać 3 różne algorytmy sortowania np. bąbelkowe, przez wstawianie
i kopcowe.
Wybrane algorytmy należy zaimplementować dla tablic struktur typu
"TOsoba".
Sortowanie powinno przebiegać według wybranych pól
struktury (np. wg pola nazwisko)
lub kryterium łączącego wartości kilku pól
(np. najpierw wg nazwiska,
a w przypadku identycznych nazwisk dodatkowo wg
imienia).
Wewnątrz algorytmów sortujących należy umieścić liczniki mierzące liczbę
wystąpień
podstawowych operacji: porównań, dodawań, wywołań funkcji,
przypisań, itp.
Wykonując badania porównawcze należy dla każdego algorytmu
wypełniać tablice
identycznymi ciągami wylosowanych wartości (np. litery w
nazwisku za pomocą losowania kodów ASCII)
rozpoczynając losowanie dla każdego
z sortowań po ustawieniu generatora liczb losowych
za pomocą funkcji srand np.srand(3).
Taka inicjalizacja umożliwi porównanie liczby operacji (liczników)
wybranych sortowań,
dla takich samych danych wejściowych.
LABORATORIUM nr 2
Kontynuacja badań algorytmów sortowania oraz algorytmów wyszukiwania.
Zalecenia związane z wykonaniem zadania: oprogramowanie powinno być
wykonane w stylu ADT,
czyli operacje na tablicach jako funkcje wywoływane z
funkcji nadrzędnych obsługujących interakcje z użytkownikiem
oraz
zastosowanie przekazywania danych poprzez listy parametrów funkcji.
W zależności od poziomu zaawansowania uczestników laboratorium,
wykorzystywane reprezentacje danych mogą mieć różny stopień złożoności:
LABORATORIUM nr 3
Badania algorytmów sortowania danych w pamięci zewnętrznej - sortowania plików:
naturalnego,
wielokierunkowego
polifazowego
Na podstawie wykładów (4 i 9) należy
przystosować programy sortujące pliki liczb całkowitych
do sortowania
plików zawierających struktury "TOsoba".
Podobnie jak w lab. 1 i 2, w kodzie programu należy umieścić liczniki umożliwiające
pomiar ilości podstawowych operacji na pamięci operacyjnej oraz
dodatkowo zliczanie
podstawowych operacji na plikach (fwrite, fread,
fclose, fopen itp).
Badania porównawcze należy
przeprowadzić dla danych wejściowych:
nieposortowanych, uporządkowanych częściowo
i całkowicie posortowanych.
LABORATORIUM nr 4
Badania algorytmów wykorzystujących rekurencję i kolejki implementowane za pomocą list.
lub alternatywnie do zadania nr (a)
Uwagi do zadań 1.a i 1.b:
LABORATORIUM nr 5
Badania algorytmów stosujących reprezentację danych w postaci drzew (niewyważonych i wyważonych).
Budowa niewyważonego drzewa binarnego dla 1000
elementów
ze wstawianiem nowego elementu jako liść
Budowa wyważonego drzewa binarnego dla danych
j.w.
Funkcje operujące na kolejce priorytetowej -
funkcje wstawiającą i pasującą do niej
funkcje usuwającą największy
element, stosując drzewo binarne: niewyważone lub wyważone.
Funkcję wyświetlającą zawartość drzewa na
ekranie: przedrostkowo,
w sposób uporządkowany oraz przyrostkowo
Wykorzystanie w/w kolejki priorytetowej do
wielokierunkowego sortowania plików
wg wybranej składowej; zapis
danych z listy do pliku
w sposób przedrostkowy lub przyrostkowy i
posortowany.
Wyświetlanie zawartości pliku na ekranie.
LABORATORIUM nr 6
Badania algorytmów wykorzystujących grafową reprezentację danych.
Napisz program pozwalający przechowywać informacje o planie ulic
dowolnego osiedla.
Układ tych ulic (jedno lub dwukierunkowych) powinien być
reprezentowany za pomocą macierzy incydencji grafu
składającego się ze
skrzyżowań (węzły) i ulic (łuki). Macierz ta może być zaimplementowana za
pomocą:
dynamicznej listy dynamicznych pod-list,
dynamicznej tablicy wskaźników na dynamiczne pod-listy
W/w listy i pod-listy mogą być
zaimplementowane jako: jednokierunkowe, dwukierunkowe, cykliczne, itp.
Program powinien umożliwiać:
wczytanie i zapisanie planu miasta w pliku,
wyświetlenie fragmentu planu miasta na ekranie
(np. w postaci listy ulic dochodzących do danego skrzyżowania,
lub skrzyżowań dotyczących tej ulicy)
wyszukiwanie połączeń pomiędzy zadanymi skrzyżowaniami (wierzchołkami)
Ostatnia modyfikacja: 10.05.2005