plik


ÿþDr Aleksander Klosow PWSZ Legnica, 2003 www.strony.wp.pl/wp/klosov/ Algorytmy i Struktury Danych WykBad 4 SORTOWANIE POWTÓRZENIE Funkcja nazywa si rekurencyjn, je|eli w trakcie wykonania odwoBuje si do samej siebie Istniej ró|ne typy rekurencji: - Naturalna; - Terminalna; - Z parametrem; - Wielokrotna i inne. Derekursywacj nazywamy proces przeksztaBcenia programu rekurencyjnego na program iteracyjny ! Rozwiza samodzielnie: - W sposób rekurencyjny odwróci kolejno[ elementów w tablicy T[N] - Znalez sum elementów tablicy T[N] w sposób rekurencyjny SORTOWANIE SORTOWANIE Definicja - Sortowaniem nazywamy proces ustawiania zbioru obiektów w okre[lonym porzdku. Motywacja - UBatwi wyszukiwanie danych Wymaganie - Oszczdne korzystanie z pamici (n.p., sortujc tablic liczb nie mo|na korzysta z dodatkowej tablicy) KLASYFIKACJA METOD SORTOWANIA Sortowanie proste Sortowanie szybkie - Proste wybieranie (selection sort) - Metoda Shell'a - Proste wstawianie (insertion sort) (malejcych przyrostów) - Prosta zamiana (exchange sort) - Scalanie cigów - Kopcowanie (stogowe, heap sort) - Quicksort (sortowanie przez podziaB) Zalety prostych metod: 1) Programy s krótkie, Batwe do zrozumienia, zajmuj mniej pamici 2) S szybsze dla maBej liczby elementów 3) Lepiej nadaj si do wyja[nienia zasad sortowania MIARA EFEKTYWNOZCI SORTOWANIA Kryterium: oszczdne zu|ycie czasu Miara: liczba koniecznych porównaD + liczba koniecznych przesuni PO + PR Metody proste O( n2 ) Metody szybkie O( n log2(n) ) O() - funkcja zBo|ono[ci teoretycznej algorytmów z asymptotyczn granic górn ...istniej równie| : ˜() - ... z asymptotyczn granic górn oraz doln o() - ... z górn granic asymptotycznie nie dokBadna ZAO{ONOZ TEORETYCZNA ALGORYTMÓW DokBadna liczb operacji porównania oraz przepisania stanowi praktyczn zBo|ono[ algorytmu T(n). Typ funkcji matematycznej, która w najwikszym stopniu wyznacza wielko[ T(n) nazywamy zBo|ono[ci teoretyczn O(f(n)) T(n) O() - klasa algorytmu 2n+5 O(n) 5n+8 O(n) 2n2+3n+2 O(n2) an3+2n2+8 O(n3) 2n+n2+2 O(2n) SORTOWANIE metod prostej zamiany bbelkowe 2 5 4 1 3 6 1. Sprawdzamy caB tablic od pocztku do koDca, porównujc zawsze dwa ssiednie elementy 2. Je|eli trafimy na par elementów, w której wikszy poprzedza mniejszy to zamieniamy je miejscami. 3. Czynno[ powtarzamy tak dBugo a| podczas sprawdzania caBej tablicy, nie zajdzie ani jedna zamiana elementów SORTOWANIE metod prostej zamiany Realizacja klasyczna - C void bubble_sort(int *tab, int n) { int zmiana; do { zmiana = 0; // brak zmian for(int i=1;i<n; i++) if(tab[i-1]>tab[i]) { // zamiana ssiednich elementów int tmp=tab[i-1]; tab[i-1] = tab[i]; tab[i] = tmp; zmiana = 1; // jest zmiana } } while(zmiana); } SORTOWANIE metod prostej zamiany Realizacja zmodyfikowana - Pascal procedure bubble_sort(var tab: array[1..n] of integer); var i,j,tmp:integer; begin for i:=2 to n do begin for j:=n downto i do if tab[j-1]>tab[j] then begin tmp:=tab[j-1]; tab[j-1]:=tab[j]; tab[j]:=tmp; end end end SORTOWANIE metod prostej zamiany Analiza zBo|ono[ci PO PR T(n) min 0.5(n2-n) 0 0.5(n2-n) [r 0.5(n2-n) 0.75(n2-n) 1.25(n2-n) max 0.5(n2-n) 1.5(n2-n) 2(n2-n) ZBo|ono[ teoretyczna: O(n2) SORTOWANIE metod prostego wybierania 2 5 4 1 3 6 1. Wybieramy najmniejszy element tablicy 2. Wymieniamy go z pierwszym elementem 3. Powtarzamy operacje 1-2 dla pozostaBych n-1 elementów, nastpnie dla n-2 i t.d. a| pozostanie 1 element. SORTOWANIE metod prostego wybierania Realizacja - Pascal procedure proste_wybieranie(var tab:array[1..n] of integer) var i,j,k,min:integer; BEGIN for i:=1 to n-1 do begin k:=i; // pozycja najmniejszego elementu min:=a[i]; // najmniejszy element for j:=i+1 to n do // ptla wyznaczajca najmniejszy element if a[j]<min then begin k:=j; min:=a[j]; end; a[k]:=a[i]; // wymiana pierwszego z najmniejszym a[i]:=min; end END SORTOWANIE metod prostego wybierania Analiza zBo|ono[ci PO PR T(n) min 0.5(n2-n) 3(n-1)0.5n2+2.5n-3 [r 0.5(n2-n) n(ln(n)+0.57) 0.5n2+n(ln(n)+0.07) max 0.5(n2-n) 0.25n2+3(n-1) 0.75n2+2.5n-3 ZBo|ono[ teoretyczna: O(n2) SORTOWANIE metod prostego wstawiania 2 5 4 1 3 6 1. Elementy s podzielone umownie na cig wynikowy oraz cig zródBowy 2. W ka|dym kroku poczwszy od i=2 i zwikszajc i o jeden, i-ty element cigu zródBowego przenosi si do cigu wynikowego, wstawiajc go w odpowiednie miejsce. 3. Proces przenoszenia i-go elementu koDczy si kiedy: a) znaleziono j-ty element mniejszy ni| i-ty element b) osignito lewy koniec cigu wynikowego SORTOWANIE metod prostego wstawiania Realizacja - Pascal procedure proste_wstawianie(var tab:array[1..n] of integer) var i,j,tmp:integer; BEGIN for i:=2 to n do begin tmp:=a[i]; // element wstawiany a[0]:=tmp; // wartownik j:=i -1; // element cigu wynikowego while tmp<a[j] do begin a[j+1]:=a[j]; // przesunicie w prawo j:=j-1; // nastpny element end; a[j+1]:=tmp; // wstawienie elementu end END SORTOWANIE metod prostego wstawiania Analiza zBo|ono[ci PO PR T(n) min n-1 2(n-1)3(n-1) [r 0.25(n2+n-2) 0.25(n2+9n-10) 0.5(n2+5n-6) max 0.5(n2+n)-1 0.5(n2+3n-4) n2+2n-3 ZBo|ono[ teoretyczna: O(n2) PORÓWNANIE METOD SORTOWANIA PROSTEGO Metoda sortowania Klasa Najlepszy wynik Najgorszy wynik T(100) T(100) Prosta zamiana O(n2) 9950 19800 Proste wybieranie O(n2) 5247 7747 Proste wstawianie O(n2) 297 10197 Metoda sortowania Klasa Najlepszy wynik Najgorszy wynik T(10) T(10) Prosta zamiana O(n2) 45 180 Proste wybieranie O(n2)72 97 Proste wstawianie O(n2) 27 117 JAK POLICZY ZAO{ONOZ PRAKTYCZN? void bubble_sort(int *tab, int n) { int zmiana; int po=0, pr=0; do { pr++, zmiana = 0; for(pr++, int i=1; po++, i<n; i++) if(po++, tab[i-1]>tab[i]) { pr+=4; int tmp=tab[i-1]; tab[i-1] = tab[i]; tab[i] = tmp; zmiana = 1; } } while(po++, zmiana); } WNIOSKI 1. Najszybsz jest metoda prostego wybierania 2. Metoda bbelkowa jest najpowolniejsza w wikszo[ci wypadkach 3. Metoda prostego wstawiania jest najlepsza dla cz[ciowo lub caBkowicie uporzdkowanych cigów 4. Metoda bbelkowa najlepiej si nadaje dla cigów dBugo[ci < 30

Wyszukiwarka

Podobne podstrony:
AiSD w4 sortowanie2
F2 W4 dielektryki
w4
ML1 W4 1 (2)
W4 MECH EN
W4 PODSTAWY PROJEKTOWANIA KONSTRUKCJI NS
W4 Wymiana gospodarcza z zagranica
Finanse w4
W4 ZIP Podstawy metrologii elekt
Przykład do W4
hih w4
pca w4
TSZ MBM w4
notatki W4
W4 3therawchef com the raw chef Lime amp Ginger Mascarpone IceCream
C w4 funkcje mem lancuchy
w4

więcej podobnych podstron