Lektura Zestawienie algorytmów sortowania Zadania

Transkrypt

Lektura Zestawienie algorytmów sortowania Zadania
PAMSI Semestr letni 2014
Lista 4: Sortowanie
Czas na wykonanie zadań i dostarczenie sprawozdania: przed zajeciami
¾
8.04.
Lektura
Opis algorytmów sortowań dostepny
¾
na liście dr J. Mierzwy
http://jaroslaw.mierzwa.sta¤.iiar.pwr.wroc.pl/pamsi/zdw_sort.pdf
Cormen T., Leiserson C.E., Rivest R.L., Stein C., Wprowadzenie do algorytmów, WNT
Drozdek A., C++. Algorytmy i struktury danych, Helion
Wprowadzenie do tworzenia testów jednostkowych za pomoca¾ biblioteki Boost::Test :
http://cpp0x.pl/artykuly/?id=67
Pomiar czasu przy uz·yciu biblioteki Boost::Timer
http://sta¤.elka.pw.edu.pl/~rnowak2/zprwiki/doku.php?id=timer
Referencja do biblioteki random (C++11):
http://www.cplusplus.com/reference/random/
Zestawienie algorytmów sortowania
1. Sortowanie babelkowe
¾
(bubble sort)
2. Sortowanie przez wstawianie (insertion sort)
3. Sortowanie przez kopcowanie (heap sort)
4. Sortowanie przez scalanie (merge sort)
5. Sortowanie Shella (Shellsort)
6. Sortowanie szybkie (quicksort)
7. Sortowanie introspektywne (introspective sort)
8. ...
Zadania
Zadanie 1 Wybrać 2 algorytmy sortowania z powyz·szego zestawienia (trzeci algorytm zostanie
wybrany przez prowadzacego)
¾
i je samodzielnie zaimplementować, uz·yć szablonów
aby umoz·liwić sortowanie róz·nych typów danych (liczby, napisy itp. - dla sortowania
napisów prosze¾ stosować porzadek
¾ s÷
ownikowy). Jeden z trzech wybranych algorytmów
zaimplementować na dzisiejszych zajeciach.
¾
1
Zadanie 2 Stworzyć aplikacje¾ tester, która bedzie
¾
umoz·liwia÷
a wybór algorytmu (1,2 lub 3)
i przetestowanie implementacji sortowania oraz czasu wykonania. Zaleca sie¾ uz·ycie
testów jednostkowych z biblioteki boost (boost::test) oraz pomiaru czasu przy uz·yciu biblioteki (boost::timer).
Zadanie 3 Stworzyć aplikacje¾ eksperyment, która bedzie
¾
s÷
uz·y÷
a do przeprowadzenia testów efektywności zaimplementowanych algorytmów sortujacych.
¾
Na wejście aplikacji (moz·e
być za pomoca¾ menu albo jako parametr programu) nalez·y wybrać rodzaj sortowanej
tablicy (spośród typów opisanych w nastepnej
¾
sekcji), a na wyjściu aplikacja ma zwrócić czas potrzebny na posortowanie elementów tego rodzaju tablicy (nie nalez·y liczyć
czasu potrzebnego na wygenerowanie jej elementów). Nalez·y pamietać
¾
o uśrednieniu
wyniku z n = 100 niezalez·nych pomiarów czasu sortowania tablicy danym algorytmem. Te same dane nalez·y sortować róz·nymi algorytmami aby dokonać porównania
ich efektywności.
Za÷
oz·enia dotyczace
¾ sortowanych tablic
Nalez·y przygotować zestawy tablic róz·niace
¾ sie¾ liczba¾elementów - nalez·y przygotować tablice
majace
¾ 100; 1 000; 10 000; 100 000 i 1 000 000 elementów. W kaz·dym zestawie nalez·y wygenerować elementy w sposób losowy - uz·yć 3 rozk÷
adów: jednostajnego, normalnego oraz Poissona przy pomocy biblioteki <random>. Oprócz tego przygotować 4 warianty: tablica zupe÷
nie losowa, pierwsze 50% elementów posortowane, pierwsze 90% elementów posortowane
i pierwsze 99% elementów posortowane. Daje to w sumie 60 tablic do testów. Do sprawozdania prosze¾ wybrać te najciekawsze i moz·liwie najbardziej przegladowe
¾
wyniki.
Przyk÷
adowy interfejs programu eksperyment
Witaj! Ile elementow ma miec tablica?
> 100
0 - sortowanie tablicy z rozkladu jednostajnego
1 - sortowanie tablicy z rozkladu normalnego
2 - sortowanie tablicy z rozkladu Poissona
> 2
0 - sortowanie nieuporzadkowanej tablicy
1 - sortowanie tablicy z 10% uporzadkowanymi elementami
2 - sortowanie tablicy z 50% uporzadkowanymi elementami
3 - sortowanie tablicy z 90% uporzadkowanymi elementami
> 3
Czekaj...
Sredni czas pomierzony dla n=100 powtorzen:
algorytm 1
300.2 ms
algorytm 2
293.4 ms
algorytm 3
329.1 ms
Powtorzyc eksperyment? [t/n]
> n
2
Sprawozdanie
W sprawozdaniu nalez·y zawrzeć:
Krótkie wprowadzenie
Omówienie z÷
oz·oności obliczeniowej dla wybranych algorytmów sortowania (przypadek
średni/najgorszy)
Omówienie przebiegu eksperymentu i przedstawienie wyników (w postaci wykresów i
tabel), do kaz·dego wykresu tabela
Podsumowanie dokonanej pracy i wnioski
Literatura i wszelkie źród÷
a zewnetrzne,
¾
z których korzystano (linki, ksia¾z·ki itd)
Sprawozdanie prosze¾ wys÷
ać na adres e-mail prowadzacego.
¾
Kody źród÷
owe prosze¾ zamieścić
na githubie, jak zazwyczaj.
3

Podobne dokumenty