Poiedziałki 11.45 Grupa I3 Iformatyka a wydziale Iformatyki Politechika Pozańska Algorytmy I Struktury Daych Prowadząca: dr Hab. iż. Małgorzata Stera Sprawozdaie do Ćwiczeia 1 Algorytmy sortowaia (27.2.12) Autorzy: Oliwer Kostera r ideksu 16552 Adam Matuszewski r ideksu 1655
1. Implemetacja metod sortowaia. Do implemetacji metod sortowaia posłużyliśmy się językiem C. Każda z metod została apisaa w odrębej fukcji. Do mierzeia czasu poszczególych metod użyliśmy fukcji clock() z bibliotek time.h. 2. Badaa zależość czasu obliczeń od liczby sortowaych elemetów. Isertio Selestio Bubble Heap Quick * Merge Coutig 2,46,78 2,29,1,,1, 4 1,87 3,14 9,13,1,1,1, 6 4,2 7,4 2,52,2,2,1, 7 5,73 9,57 27,86,2,2,2, 8 7,57 12,51 36,46,3,2,2, 9 9,45 15,83 46,17,4,2,3,1 1 11,69 19,54 56,93,4,2,3,1 12 16,78 28,16 82,1,5,2,4,1 15 26,17 44,15 128,35,6,3,4,1 2 47,3 78,68 226,7,7,4,6,1 3 14,6 179,53 536,91,14,8,9,2 4 195,4 328,67 955,88,19,1,12,4 5 34,88 514,14 1492,83,25,13,16,5 75 691,2 1163,54 3356,55,38,21,26,9 1 1246,62 262,72 5829,55,53,28,33,9 *- metoda Quick z podziałem wg środkowego elemetu Zakres liczb [1, ].
7 6 5 4 3 2 1 4 7 9 12 2 4 75 2 6 8 1 15 3 5 1 Isertio Selectio Bubble.6.5.4.3.2.1 2 4 7 9 12 2 4 75 6 8 1 15 3 5 1 Heap Quick Merge Coutig
Wioski: -metody Heap, Quick, Merge i Coutig są algorytmami szybszymi jak widać a powyższych wykresach co czyi je efektywiejszymi, -ajszybszym algorytmem z metod szybkich dla z zakresu [2, 1] jest Coutig, atomiast ajwoliejsza Heap, -ajszybszym algorytmem z metod wolych dla z zakresu [2, 1] jest Isertio, atomiast ajwoliejsza Bubble, Na efektywość algorytmów sortowaia ma wpływ między iymi liczba sortowaych elemetów, rozkład i zakres elemetów czy złożoość obliczeiowa. Powyższe algorytmy możemy podzielić ze względu a wrażliwość a dae wejściowe, złożoość obliczeiową, stabilość czy zajmowaie pamięci. Wszystkie metody szybkie maja złożoość O(*log), atomiast metody wole O( 2 ). Do algorytmów stabilych możemy zaliczyć MS, CS, IS i BS. Wrażliwe a dae wejściowe są IS, CS, QS i HS. Metodami działającymi w miejscu są wszystkie algorytmy wole oraz HS. 3. Metody szybkie QS, a metoda IS dla losowego i rosącego rozkładu daych. IS(losowe) QSs*(losowe) QSe*(losowe) IS(rosące) QSs(rosące) QSe(rosące) 4 1,87,1,1,1 1,72 6 4,2,2,2,1 3,86 7 5,73,2,2,1 5,24 8 7,57,2,2,1 6,85 9 9,45,2,2,1 8,66 1 11,69,2,3,1 1,67 12 16,78,2,3,1 15,33 15 26,17,3,3,1 23,4 16 31,5,4,4,2 26,16 17 34,83,5,4,2 29,62 QSs- Quick z pivotem a środku Qse- Quick z pivotem a skraju
4 35 3 25 2 15 1 5 4 6 7 8 9 1 12 15 16 17 IS(losowo) Qss(losowo) Qse(losowo) IS(rosąco) Qsm(rosąco) Qse(rosąco) Wioski dla metody szybkiej QS: -pukt podziału tablicy zaczie wpływa a efektywość tej metody, w przypadku rozkładu losowego daych, czasy wykoywaia algorytmów były podobe, atomiast dla rozkładu losowego złożoość obliczeiowa metody z piwotem w środku tablicy rosła aż do O( 2 ). -ajgorszym przypadkiem dla metody z podziałem wg skrajego elemetu jest ciąg posortoway rosąco lub malejąco, wpływ ma a to ilość wykoywaych iteracji (mediaa ciągu zajduje się w środku), -ajlepszym przypadkiem dla algorytmu z podziałęm wg środkowego elemetu jest ajgorszy przypadek dla metody z podziałem wg skrajego elemetu, -ajgorszym przypadkiem dla metody z piwotem w środku są ciągi A lub V- kształte, -ajlepsza wersją wyboru puktu podziału jest zalezieie mediay ciągu i w tym miejscu jego ustawieie, zaletą tego jest utrzymaie złożoości O(*log), atomiast wadą wymagay dodatkowy czas, -metoda szybka posiada iejawe wymagaie pamięciowe w postaci odkładaia wartości a stos przy rekurecji.
Metoda szybka a metoda IS. Z wyżej otrzymaych wyików, możemy wioskować, że efektywiejszym algorytmem jest QS od IS. Nawet w przypadku gdy złożoość QS rośie do O( 2 ) to adal jest szybsza metodą jak IS dla losowych elemetów. Algorytm IS jest tym lepszym tylko w przypadku gdy wiemy, że dae są już posortowae (złożoość O()), ie wymaga wtedy żadej pamięci w przeciwieństwie do QS. Podstawowe wady i zalety poszczególych algorytmów. Isertio : -zalety: stabila, działą w miejscu, zachowaie aturale, ajszybsza z metod wolych, -wady: jak każda metoda wola złożoość obliczeiowa O( 2 ) Selectio : -zalety: działa w miejscu, iewrażliwa a dae wejśćiowe, -wady: iestabila, bardzo dużo porówań, bardzo słabe zachowaie aturale, złożoość O( 2 ), Bubble : -zalety: działa w miejscu, jest stabila, -wady: ajwoliejsza z metod wolych, słabe zachowaie aturale, złożoość O( 2 ), Heap : -zalety: działa w miejscu, mało wrażliwa a układ daych wejściowych, złożoość w przypadku pesymistyczym O(*log), a optymistyczym O(), stabila, -wady: zachowaie ieaturale, ajwoliejsza z metod szybkich, Quick : -zalety: jeda z ajszybszych metod w typowych warukach, -wady: iejawe wymagaia pamięciowe, wrażliwa a dae wejściowe, jedya z metod szybkich dla których złożoość może urosąć do O( 2 ) Merge : -zalety: stabila, miej porówań od QS, -wady: ie działa w miejscu, Coutig : -zalety: iewrażliwa a rozkład daych wejściowych, zlożoość liiowa, -wady: działa tylko dla liczb aturalych, duże zapotrzebowaia pamięciowe, sila zależość od zakresu daych wejściowych
(może też być zaletą), 4. Metoda CS a QS. QS (zakres,1*) CS (zakres,1*) QS (zakres 1*) CS (zakres 1*) 5,2,1,7 1,3,2,11 2,7,4,39 3,11,1,8,37 4,15,1,1,75 5,18,1,13,71 6,22,2,15,91 7,26,2,15,91 9,33,1,24 1,33 1,37,2,27 1,72
Zakres [1,,1*].4.35.3.25.2.15.1.5 5 1 2 3 4 5 6 7 9 1 QS CS
Zakres [1, 1*] 2 1.8 1.6 1.4 1.2 1.8.6.4.2 5 1 2 3 4 5 6 7 9 1 QS CS