Z Wykład 06 2008


Na ostatnich wykładach mówiliśmy o metodzie Shella. Dziś dokończymy to zagadnienie. Warto dodać jeszcze do tamtych informacji, że złożonośc obliczeniowa algorytmu sortowania metodą malejących przyrostów (Shella) równa jest 0x01 graphic
. Wówczas zachodzi tutaj: 0x01 graphic
. I teraz przejdźmy do omówienia sortowania szybkiego (quicksort). Metoda ta została opracowana przez C.A.R. Hoarea. Metoda ta podobnie, jak metoda Shella zakłada dekompozycje tablicy na mniejsze podtablice, które łatwiej jest posortować. Idea metody zawiera się w trzech krokach:

  1. Należy rozdzielić elementy danego ciągu 0x01 graphic
    na dwie części względem pewnego ustalonego elementu - takzwanej mediany (elementu osiowego) tak, aby na lewo od niego znajdowały się elementy mniejsze, a na prawo elementy większe.

  2. Należy posortować elementy na lewo od mediany.

  3. Należy posortować elementy znajdujące się na prawo od mediany.

Oto jak wygląda przykład takiego sortowania:

0x01 graphic

Algorytm quicksort jest typowym algorytmem rekurencyjnym. W celu podzielenia tablicy konieczne jest tu wykonanie dwóch nastepujących operacji:

  1. Znalezienie elementu osiowego (wyznaczającego podział tablicy na dwie podtablice).

  2. Przejrzeniu tablicy w celu umieszczenia jej elementów we właściwych podtablicach.

Wybór dobrego elementu osiowego nie jest zadaniem łatwym, gdyz obie podtablice powinny mieć zblizoną wielkość. Najczęściej stosuje się dwie strategie wyboru elementu osiowego. Pierwsza to wybieranie pierwszego elementu tablicy, a druga - wybieranie elementu znajdującego się pośrodku tablicy. Oto algorytm sortowania szybkiego w postaci pseudokodu:

0x01 graphic

I jeszcze raz przykład:

0x01 graphic

Przypadek pesymistyczny dla sortowania szybkiego zachodzi wówczas, gdy wektor jest uporzadkowany (rosnąco lub malejąco). Pesymistyczna złożoność tego algorytmu mierzona liczbą porównań wartości wynosi 0x01 graphic
. Jeśli jako medianę wybiera się zawsze pierwszy element, to w wyniku rozdzielenia, jedna częśc młodsza będize pusta, a druga starsza będzie zawierała o jeden element mniej niż w poprzednim kroku. Spójrzmy na wzór dla ostatecznej wersji przypadku pesymistycznego (koszt operacji ropzdzielania dla n elementowego ciągu wynosi n - 1 porównań):

0x01 graphic

A teraz kolej na przypadek optymistyczny. Mamy następujące założenie: 0x01 graphic
. Przypadek optymistyczny ma miejsce wówczas, gdy tablica jest dzielona na równe części. Średnia złożonośc tego algorytmu wynosi wówczas 0x01 graphic
. Z kolei liczba porównań w kolejnych iteracjach pętli wynosi:

0x01 graphic

A zatem ostatecznie 0x01 graphic
. Kolej na przypadek średni. Z badań wynika, że srednia złożonośc algorytmu quicksort jest bliższa przypadkowi optymistycznemu, czyli wynosi 0x01 graphic
. Kolejną metodą jest sortowanie przez scalanie. Jest jednym z pierwszych algorytmów sortowania komputerowego. Autorem tej metody jest John von Neumann. Podobnie, jak metoda Shella algorytm ten zakłada podział tablicy na dwie mniejsze podtablice, które jest łatwiej posortować. Idea metody zawiera się w trzech punktach. Najpierw dzielimy sortowany ciąg na dwa podciągi. Potem sortujemy lewy i prawy podciąg stosując zasady rekurencji, a następnie scalamy dwa uporzadkowane podciągi otrzymując posortowany ciąg wyjściowy. Oto przykład:

0x01 graphic

Poniżej rysunek przedstawiający ideę scalania dwóch podtablic w jedną (obie podtablice są uporządkowane):

0x01 graphic

A oto kod to powyśzego rysunku o zlożoności T(n) = O(n):

0x01 graphic

A oto pseudokod dla całego algorytmu sortowania przez scalanie:

0x01 graphic

No i zlożonośc obliczeniowa tego algorytmu: 0x01 graphic
. Można by tu zatem pokazać, że 0x01 graphic
także w przypadku pesymistycznym.

A teraz przejdźmy do ostatniego już działu algorytmów sortowania, a mianowicie do sortowania zewnętrznego (cały czas mówiliśmy o wewnętrznym). I teraz nieco o sortowaniu danych w plikach zewnętrznych. Dane, które sa przechowywane w plikach zewnętrznych także mogą być sortowane. Wymaga to jednak strosowania nieco innych metod sortowania. Wynika to z innej organizacji dostepu do danych, które sa przechowywane w plikach zewnętrznych, gdzie ogranicza nas przede wszystkim sekwencyjność ich zapisu. Omówione na dzisiejszych wykładach zostana dwie takie metody sortowania danych w plikach zewnętrznych, a mianowicie metoda łączenia prostego i metoda łączenia naturalnego. Metoda łączenia prostego polega na sukcesywnym dzieleniu danych w pliku na podciągi (serie) o ustalonej długości maksymalnej i łączeniu tych podciągów wraz z równoczesnym porzadkowaniem zawartych w nich elementów w uporządkowane serie danych. Porządek ten może być dowolny (rosnący lub malejący). Zapis logiki algorytmu sortowania metodą łączenia prostego może być następujący:

0x01 graphic

Popatrzmy jak wygląda metoda łączenia prostego niemalejąco w poszczegolnych krokach:

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

I kolej na metodę łączenia naturalnego. Polega ona na sukcesywnym dzieleniu danych w pliku według uporzadkowanych podciągów i łączeniu tych podciągów wraz z równoczesnym porzadkowaniem zawartych w nich elementów. Nie ustala się tutaj długości podciągów - zależy to wyłącznie od ulożenia wartości sortowanych elementów. Oto zapis logiki algorytmu sortowania metodą łączenia naturalnego:

0x01 graphic

I przykład metody łączenia naturalnego niemalejąco:

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic



Wyszukiwarka

Podobne podstrony:
wykład 06 2008 11 18
wyklad 06[1].01.2008, Zarządzanie studia licencjackie, Finanse publiczne
14 06 Marzena, Wykład z 14-06-2008
wyklad 14 05.06.2008, Administracja UŁ, Administracja I rok, Ustrój organów ochrony prawnej
Z Wykład 06.04.2008, Zajęcia, II semestr 2008, Rachunek prawdopodobieństwa
wykład 6 - 06.11.2008, FARMACJA, ROK 5, TPL 3, Zachomikowane
Z Wykład 06.04.2008, Programowanie
wyklad 25 4.06.2008, wyklady - dr krawczyk
Z Wykład 06 04 2008 2
Wyklad 4 HP 2008 09
Wyklad 06 kinematyka MS
wykład 06
elektro wyklad 06
PAPS egz 27 06 2008
KWP Wyklad 06
Metalurgia wyklad 06, Księgozbiór, Studia, Metalurgia

więcej podobnych podstron