Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów...

75
Algorytmy i Struktury Danych. Metoda “Dziel i zwyci˛ zaj”. Problem Sortowania, cd. Bo˙ zena Wo´ zna-Szcze´ sniak [email protected] Jan Dlugosz University, Poland Wyklad 2 Bo˙ zena Wo´ zna-Szcze´ sniak (AJD) Algorytmy i Struktury Danych. Wyklad 2 1 / 47

Transcript of Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów...

Page 1: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Algorytmy i Struktury Danych.Metoda “Dziel i zwyciezaj”. Problem Sortowania, cd.

Bozena [email protected]

Jan Długosz University, Poland

Wykład 2

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 1 / 47

Page 2: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Metoda “dziel i zwyciezaj”

IdeaMetoda dziel i zwyciezaj (ang. divide and conquer) jest metodaprojektowania algorytmów, w której dany problem jest dzielony nakilka mniejszych podproblemów podobnych do poczatkowegoproblemu.

Problemy te sa rozwiazywane rekurencyjnie, a nastepnierozwiazania wszystkich podproblemów sa łaczone w celuutworzenia rozwiazania całego problemu.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 2 / 47

Page 3: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Metoda “dziel i zwyciezaj”

W podejsciu dziel i zwyciezaj kazdy poziom rekursji składa sie znastepujacych trzech etapów:

Dziel: Dzielimy problem na podproblemy.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 3 / 47

Page 4: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Metoda “dziel i zwyciezaj”

W podejsciu dziel i zwyciezaj kazdy poziom rekursji składa sie znastepujacych trzech etapów:

Dziel: Dzielimy problem na podproblemy.

Zwyciezaj: Rozwiazujemy podproblemy rekurencyjnie, chyba zesa one małego rozmiaru i juz nie wymagaja zastosowania rekursji- uzywamy wtedy bezposrednich metod.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 3 / 47

Page 5: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Metoda “dziel i zwyciezaj”

W podejsciu dziel i zwyciezaj kazdy poziom rekursji składa sie znastepujacych trzech etapów:

Dziel: Dzielimy problem na podproblemy.

Zwyciezaj: Rozwiazujemy podproblemy rekurencyjnie, chyba zesa one małego rozmiaru i juz nie wymagaja zastosowania rekursji- uzywamy wtedy bezposrednich metod.

Połacz: Łaczymy rozwiazania podproblemów, aby otrzymacrozwiazanie całego problemu.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 3 / 47

Page 6: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Dziel i Zwyciezaj - przykłady zastosowan

Znajdowanie najwiekszego i najmniejszego elementu zbioru.

Wyszukiwanie binarne

Potegowanie liczb

Sortowanie szybkie

Sortowanie przez scalanie

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 4 / 47

Page 7: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Definicja problemu:Dane:

n - liczba elementów zbiorua1, a2, a3, . . . , an - ciag elementów

Szukane: Elementy najwiekszy i najmniejszy zbioru.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 5 / 47

Page 8: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Require: tablica A o rozmiarze n {A=[0,. . . ,n-1]}Algorytm: MIN1: min = 0;2: for all i = 1 to n do3: if A[i ] < A[min] then4: min = i ;5: end if6: i = i + 1;7: end for8: return min;Algorytm: MAX1: max = 0;2: for all i = 1 to n do3: if A[i ] > A[max] then4: max = i ;5: end if6: i = i + 1;7: end for8: return max ;

Naiwne rozwiazanie problemu:Najpierw wyszukujemyelement najwiekszy metodabezposrednia, a potemelement najmniejszy.Złozonosc obliczeniowa: O(n)

Algorytm MAX : n - 1operacji porównaniaAlgorytm MIN : n - 1 operacjiporównaniaRazem MAX i MIN : 2n - 2operacji porównania

Przykład: 2 5 3 1 8 9 1 5 4 - 16porównan

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 6 / 47

Page 9: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Mozna spróbowac usprawnic rozwiazanie naiwne, znajdujacnajpierw kandydatów na Min i Max.

Takie wyszukanie realizowane jest poprzez porównywanieelementów parami.

Nastepnie stosowany jest algorytm MIN, a potem Max (lubodwrotnie), na odpowiednim zbiorze kandydatów.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 7 / 47

Page 10: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 11: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Porównywanie parami: 2 < 5,3 < 1,8 < 9,1 < 5,4

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 12: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Porównywanie parami: 2 < 5,3 < 1,8 < 9,1 < 5,4

Kandydaci na MIN: 2,1,8,1,4.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 13: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Porównywanie parami: 2 < 5,3 < 1,8 < 9,1 < 5,4

Kandydaci na MIN: 2,1,8,1,4.Na tym zbiorze stosowany jest algorytm MIN.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 14: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Porównywanie parami: 2 < 5,3 < 1,8 < 9,1 < 5,4

Kandydaci na MIN: 2,1,8,1,4.Na tym zbiorze stosowany jest algorytm MIN.

Kandydaci na MAX: 5,3,9,5,4.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 15: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Porównywanie parami: 2 < 5,3 < 1,8 < 9,1 < 5,4

Kandydaci na MIN: 2,1,8,1,4.Na tym zbiorze stosowany jest algorytm MIN.

Kandydaci na MAX: 5,3,9,5,4.Na tym zbiorze stosowany jest algorytm MAX.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 16: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Porównywanie parami: 2 < 5,3 < 1,8 < 9,1 < 5,4

Kandydaci na MIN: 2,1,8,1,4.Na tym zbiorze stosowany jest algorytm MIN.

Kandydaci na MAX: 5,3,9,5,4.Na tym zbiorze stosowany jest algorytm MAX.

Ostatni - nieparzysty element został dodany do obu zbiorów.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 17: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Przykład:

Zbiór wej sciowy: 2,5,3,1,8,9,1,5,4

Porównywanie parami: 2 < 5,3 < 1,8 < 9,1 < 5,4

Kandydaci na MIN: 2,1,8,1,4.Na tym zbiorze stosowany jest algorytm MIN.

Kandydaci na MAX: 5,3,9,5,4.Na tym zbiorze stosowany jest algorytm MAX.

Ostatni - nieparzysty element został dodany do obu zbiorów.

Wykorzystujemy tu własnosc podziału mówiaca, iz w kazdymzbiorze skonczonym zawsze znajduje sie element najwiekszy ielement najmniejszy.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

Page 18: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Szacowanie:Przy rozdzielaniu elementów wykonano 4 porównania.

Algorytm MIN na zbiorze {2,1,8,1,4} wykonał 4 porównania izwrócił wartosc 1.

Algorytm MAX równiez na zbiorze {5,3,9,5,4} wykonał 4porównania i zwrócił wartosc 9.

W sumie wykonano 4 + 4 + 4 = 12 porównan, co oznacza 25%wzrost wydajnosci w porównaniu z podejsciem naiwnym (tampotrzebnych było 16 porównan)!

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 9 / 47

Page 19: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Element minimalny i maksymalny zbioru

Require: tablica A o rozmiarze n{A = [0, . . . , n − 1]}

Algorytm: MIN-MAX1: min = 0; max = 0;2: for i = 0 to n − 2 do3: if A[i ] < A[i + 1] then4: if A[i ] < A[min] then5: min = i ;6: end if7: if A[i + 1] > A[max] then8: max = i + 1;9: end if10: else11: if A[i + 1] < A[min] then12: min = i + 1;13: end if14: if A[i ] > A[max] then15: max = i ;16: end if17: end if18: i = i + 2;19: end for

20: if n is odd then21: if A[n − 1] < A[min] then22: min = n − 1;23: end if24: if A[n − 1] > A[max] then25: max = n − 1;26: end if27: end if28: return A[min] and A[max];

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 10 / 47

Page 20: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne

Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartosci wposortowanych zbiorach (np. tablicy). Skutecznosc wyszukiwaniabinarnego wynika z tego, ze zamiast przegladac wszystkie elementyposortowanego zbioru po kolei, wykorzystujemy informacje o tym, zejest on uporzadkowany.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

Page 21: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne

Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartosci wposortowanych zbiorach (np. tablicy). Skutecznosc wyszukiwaniabinarnego wynika z tego, ze zamiast przegladac wszystkie elementyposortowanego zbioru po kolei, wykorzystujemy informacje o tym, zejest on uporzadkowany.

Algorytm:Dana jest tablica A oraz poszukiwany element key .

Sprawdz srodkowy element tablicy. Jesli jest równy key , to koniec.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

Page 22: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne

Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartosci wposortowanych zbiorach (np. tablicy). Skutecznosc wyszukiwaniabinarnego wynika z tego, ze zamiast przegladac wszystkie elementyposortowanego zbioru po kolei, wykorzystujemy informacje o tym, zejest on uporzadkowany.

Algorytm:Dana jest tablica A oraz poszukiwany element key .

Sprawdz srodkowy element tablicy. Jesli jest równy key , to koniec.

Jesli srodkowy element jest wiekszy niz key , to poszukiwanyelement jesli jest w tablicy, to jest w jej lewej czesci.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

Page 23: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne

Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartosci wposortowanych zbiorach (np. tablicy). Skutecznosc wyszukiwaniabinarnego wynika z tego, ze zamiast przegladac wszystkie elementyposortowanego zbioru po kolei, wykorzystujemy informacje o tym, zejest on uporzadkowany.

Algorytm:Dana jest tablica A oraz poszukiwany element key .

Sprawdz srodkowy element tablicy. Jesli jest równy key , to koniec.

Jesli srodkowy element jest wiekszy niz key , to poszukiwanyelement jesli jest w tablicy, to jest w jej lewej czesci.

Jesli srodkowy element jest mniejszy niz key , to poszukiwanyelement jesli jest w tablicy, to jest w jej prawej czesci.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

Page 24: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne - przykład

Znalezc liczbe 9 w ciagu: 3, 5, 7, 8, 9, 12, 15 .

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 12 / 47

Page 25: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Twierdzenie 1– Cormen T.H., Leiserson Ch.E., RivestR.L. Wprowadzenie do algorytmów, Roz. 4 (str. 73)

T (n) = a ∗ T (n/b) + f (n)

n - rozmiar problemu; rozmiar danych wejsciowych.a - liczba podproblemów w rekurencji.n/b - rozmiar kazdego podproblemu; w zasadzie zakłada sie, zewszystkie podproblemy sa tego samego rozmiaru.f(n) - koszt operacji poza rekurencyjnym wywołaniem zawierajacykoszt podziału probelmu na podproblemy i koszt operacji scaleniarozwiazan.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 13 / 47

Page 26: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Twierdzenie 1– Cormen T.H., Leiserson Ch.E., RivestR.L. Wprowadzenie do algorytmów, Roz. 4 (str. 73)

T (n) = a ∗ T (n/b) + f (n)

n - rozmiar problemu; rozmiar danych wejsciowych.a - liczba podproblemów w rekurencji.n/b - rozmiar kazdego podproblemu; w zasadzie zakłada sie, zewszystkie podproblemy sa tego samego rozmiaru.f(n) - koszt operacji poza rekurencyjnym wywołaniem zawierajacykoszt podziału probelmu na podproblemy i koszt operacji scaleniarozwiazan.

A. f (n) = O(nlogb(a)−ǫ) implikuje, zeT (n) = Θ(nlogb(a)) dla pewnego ǫ > 0

B. f (n) = Θ(nlogb(a)logk2 (n)) implikuje, ze

T (n) = Θ(nlogb(a) ∗ logk+12 (n)) dla pewnego k ≥ 0.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 13 / 47

Page 27: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne - złozonosc

nlogb(a) = nlog2(1) = n0 = 1 ⇒ (Przypadek2)

T (n) = Θ(log2(n))

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 14 / 47

Page 28: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne - Koszt algorytmu

Złozonosc pesymistyczna:Operacja dominujaca: porównywanie elementów.Koszt: T (n) = O(log2(n))

Złozonosc optymistyczna:Operacja dominujaca: porównywanie elementów.Koszt: T (n) = O(log2(n)).

Złozonosc pamieciowa: O(1).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 15 / 47

Page 29: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne - implementacja

i n t binSearch ( i n t a [ ] , i n t n , i n t key ){

i n t l e f t = 0 , r i g h t = n − 1;wh i le ( l e f t <= r i g h t ) {

i n t cu r r = ( l e f t + r i g h t ) / 2 ;i f ( key == a [ cu r r ] ) {

r e t u r n cu r r ;} e lse i f ( key < a [ cu r r ] ) {

r i g h t = cu r r − 1;} e lse {

l e f t = cu r r + 1;}

}r e t u r n ( −1) ;

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 16 / 47

Page 30: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Wyszukiwanie binarne

Uwagi o przeszukiwaniu liniowym i binarnymNiech n=20 000

Algorytm wyszukiwania liniowego – czyli przegladajacy całatablice element po elemencie – wykona 20 000 porównan.

Algorytm przeszukiwania binarnego wykona tylkolog2(20000) = 14 porównan.

Algorytm wyszukiwania binarnego wymaga jednak przekazaniaposortowanych danych.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 17 / 47

Page 31: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Potegowanie liczby

Problem: Oblicz an, dla n ∈ N.

Algorytm naiwny: an = a · a · . . . · a︸ ︷︷ ︸

nZłozonosc: Θ(n)

Algorytm dziel i zwyciezaj:

an =

{an/2 · an/2, gdy n jest parzystean−1/2 · an−1/2 · a, gdy n jest nieparzyste

Złozonosc: T (n) = T (n/2) + Θ(1) ⇒ θ(log2(n))

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 18 / 47

Page 32: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie

Algorytm sortowania szybkiego (ang. quick sort) opracowanyprzez C.A.R. Hoarea w 1962.

Algorytm QuickSortjest typowym algorytmem rekurencyjnym,pracujacym w oparciu o technike dziel i zwyciezaj.

Algorytm zakłada dekompozycje tablicy na mniejsze podtablice,które łatwiej jest posortowac.

Najczesciej stosowany algorytm sortujacy w praktyce.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 19 / 47

Page 33: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie

IdeaRozdzielic elementy danego ciagu na dwie czesci wzgledempewnego ustalonego elementu, tzw. elementu osiowego (ang.pivot) , tak aby na lewo od niego znajdowały sie elementymniejsze, a na prawo elementy wieksze.

Conquer: Recursively sort the two subarrays.

x x xx ! x! x

Rekurencyjnie posortowac elementy na lewo i na prawo odelementu osiowego.

Połaczyc posortowane podtablice.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 20 / 47

Page 34: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - przykład

2010-02-16 - 51

Algorytm QuickSort -29 40 2 1 6 18 20 32 23 34 39 41

2 1 6 18 20 23

29

40 32 34 39 41

2

1

6 18 20 23

40

32 34 39 41

1 2 6 18 20 23 29 32 34 39 40 41

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 21 / 47

Page 35: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie

W celu podzielenia tablicy konieczne jest wykonanie dwóchoperacji:

znalezienie elementu osiowego i podzieleniu tablicy na dwiepodtablice.przejrzeniu tablicy w celu umieszczenia jej elementów wewłasciwych podtablicach.

Wybór dobrego elementu osiowego nie jest zadaniem łatwym –(obie podtablice powinny miec zblizona wielkosc).Najczesciej stosowane strategie wyboru elementu osiowego:

wybranie pierwszego elementu tablicy.wybranie elementu znajdujacego sie posrodku tablicy.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 22 / 47

Page 36: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału

Require: tablica A[p..q]1: PARTITION(A,p,q)2: x = A[p]; {element osiowy = A[p]}3: i = p;4: for all j = p + 1 to q do5: if A[j] ≤ x then6: i = i + 1;7: zamien(A[i],A[j]) ;8: end if9: end for

10: zamien (A[p], A[i]) ;11: return i

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 23 / 47

Page 37: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 10 13 5 8 3 2 11i j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

Page 38: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 10 13 5 8 3 2 11i j

6 10 13 5 8 3 2 11i → j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

Page 39: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 10 13 5 8 3 2 11i j

6 10 13 5 8 3 2 11i → j

6 10 13 5 8 3 2 11i → j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

Page 40: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 10 13 5 8 3 2 11i j

6 10 13 5 8 3 2 11i → j

6 10 13 5 8 3 2 11i → j

6 5 13 10 8 3 2 11→ i j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

Page 41: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 10 13 5 8 3 2 11i j

6 10 13 5 8 3 2 11i → j

6 10 13 5 8 3 2 11i → j

6 5 13 10 8 3 2 11→ i j

6 5 13 10 8 3 2 11i → j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

Page 42: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 5 13 10 8 3 2 11i → j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

Page 43: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 5 13 10 8 3 2 11i → j

6 5 3 10 8 13 2 11→ i j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

Page 44: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 5 13 10 8 3 2 11i → j

6 5 3 10 8 13 2 11→ i j

6 5 3 10 8 13 2 11i → j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

Page 45: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 5 13 10 8 3 2 11i → j

6 5 3 10 8 13 2 11→ i j

6 5 3 10 8 13 2 11i → j

6 5 3 2 8 13 10 11→ i j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

Page 46: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 5 13 10 8 3 2 11i → j

6 5 3 10 8 13 2 11→ i j

6 5 3 10 8 13 2 11i → j

6 5 3 2 8 13 10 11→ i j

6 5 3 2 8 13 10 11i → j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

Page 47: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 5 3 2 8 13 10 11i → j

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 47

Page 48: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - procedura podziału, przykład

6 5 3 2 8 13 10 11i → j

2 5 3 6 8 13 10 11i

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 47

Page 49: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - algorytm

QuickSort (A, p, r)

Jesli p = r , to koniec

Jesli p < r , to

q = PARTITION(A, p, r).QuickSort(A, p, q-1).QuickSort(A, q+1, r).

Wywołanie: QuickSort(A, 1, n)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 27 / 47

Page 50: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - Złozonosc pesymistyczna:

Najgorszy przpadek dla algorytmu sortowania szybkiego to ciagdanych juz uporzadkowanych w kolejnosci odwrotnej do pozadanej.

Jesli Split jako medianewybiera zawsze pierwszyelement, to w wynikurozdzielenia, jedna czesc„młodsza” bedzie pusta , adruga „starsza” bedziezawierała o jeden elementmniej niz w poprzednimkroku.Koszt Operacji rozdzielaniadla n elementowego ciaguwynosi n − 1 porównan.

T (n) = T (n − 1) + cnT (n − 1) = T (n − 2) + c(n − 1)T (n − 2) = T (n − 3) + c(n − 2)

...T (2) = T (1) + c(2)T (n) = T (1) + c

∑ni=2 i = O(n2)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 28 / 47

Page 51: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - Złozonosc optymistyczna:

Podział jest zawsze perfekcyjnie zbalansowany.Element osiowy jest zawsze po srodku.

T (n) QuickSort (A, p, r)Θ(1) Jesli p = r , to koniec

Jesli p < r , toΘ(n) (1) q = PARTITION(A,p, r).

2 · T (n/2) (2) rekurencyjnie posortuj A[p..q − 1] i A[q + 1..r ].

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 47

Page 52: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - Złozonosc optymistyczna:

Podział jest zawsze perfekcyjnie zbalansowany.Element osiowy jest zawsze po srodku.

T (n) QuickSort (A, p, r)Θ(1) Jesli p = r , to koniec

Jesli p < r , toΘ(n) (1) q = PARTITION(A,p, r).

2 · T (n/2) (2) rekurencyjnie posortuj A[p..q − 1] i A[q + 1..r ].

T (n) ={

Θ(1) n = 12 · T (n/2) + Θ(n) n > 1

Na podstawie Twierdzenia 1 mozna pokazac, ze powyzsze równanierekurencyjne ma nastepujace rozwiazanie:

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 47

Page 53: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - Złozonosc optymistyczna:

Podział jest zawsze perfekcyjnie zbalansowany.Element osiowy jest zawsze po srodku.

T (n) QuickSort (A, p, r)Θ(1) Jesli p = r , to koniec

Jesli p < r , toΘ(n) (1) q = PARTITION(A,p, r).

2 · T (n/2) (2) rekurencyjnie posortuj A[p..q − 1] i A[q + 1..r ].

T (n) ={

Θ(1) n = 12 · T (n/2) + Θ(n) n > 1

Na podstawie Twierdzenia 1 mozna pokazac, ze powyzsze równanierekurencyjne ma nastepujace rozwiazanie:

nlogb(a) = nlog2(2) = n1 = n ⇒ (Przypadek2)

T (n) = Θ(n · log2(n))

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 47

Page 54: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - Koszt algorytmu

Złozonosc pesymistyczna:Operacja dominujaca: porównywanie elementów.Koszt: T (n) = O(n2)

Złozonosc optymistyczna:Operacja dominujaca: porównywanie elementów.Koszt: T (n) = Θ(n · log2(n)).

Złozonosc pamieciowa: O(1).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 30 / 47

Page 55: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie szybkie - implementacja

vo id qu ickSor t ( i n t a [ ] , i n t l e f t , i n t r i g h t ) {i f ( l e f t < r i g h t ) {

/ / podz ia ł t a b l i c yi n t m = l e f t ;f o r ( i n t k = l e f t + 1 ; k <= r i g h t ; ++k ) {

i f ( a [ k ] < a [ l e f t ] ) swap ( a[++m] , a [ k ] ) ;}swap ( a [ l e f t ] , a [m] ) ;/ / Rekurencjaqu ickSor t ( a , l e f t , m − 1 ) ;qu ickSor t ( a , m + 1 , r i g h t ) ;

}}vo id swap ( i n t ∗ x , i n t ∗ y ) {

i n t tmp = ∗x ; ∗x = ∗y ; ∗y = tmp ;}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 31 / 47

Page 56: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie

Jeden z pierwszych algorytmów sortowania.

Autor metody: John von Neumann

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 47

Page 57: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie

Jeden z pierwszych algorytmów sortowania.

Autor metody: John von NeumannIdea:

Dzielimy zadanie posortowania całego ciagu na dwa podzadania:posortowania jego lewej i prawej połowy.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 47

Page 58: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie

Jeden z pierwszych algorytmów sortowania.

Autor metody: John von NeumannIdea:

Dzielimy zadanie posortowania całego ciagu na dwa podzadania:posortowania jego lewej i prawej połowy.Gdy obie czesci tworza juz ciagi uporzadkowane, wtedy scalamy jeotrzymujac rozwiazanie.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 47

Page 59: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - przykład

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 33 / 47

Page 60: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - algorytm

MergeSort A[1..n]

Jesli n = 1, to koniec

Jesli n ≥ 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n].

Scal obie połowy A w jedna posortowana tablice.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 34 / 47

Page 61: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 1

8 9 12 18 20Najmniejszy nieprzetworzony: 8

Minimum z 1 i 8 1

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 35 / 47

Page 62: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 7

8 9 12 18 20Najmniejszy nieprzetworzony: 8

Minimum z 7 i 81 7

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 36 / 47

Page 63: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 11

8 9 12 18 20Najmniejszy nieprzetworzony: 8

Minimum z 11 i 81 7 8

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 37 / 47

Page 64: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 11

8 9 12 18 20Najmniejszy nieprzetworzony: 9

Minimum z 11 i 91 7 8 9

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 38 / 47

Page 65: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 11

8 9 12 18 20Najmniejszy nieprzetworzony: 12

Minimum z 11 i 121 7 8 9 11

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 39 / 47

Page 66: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 14

8 9 12 18 20Najmniejszy nieprzetworzony: 12

Minimum z 14 i 121 7 8 9 11 12

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 40 / 47

Page 67: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 14

8 9 12 18 20Najmniejszy nieprzetworzony: 18

Minimum z 14 i 181 7 8 9 11 12 14

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 41 / 47

Page 68: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: 16

8 9 12 18 20Najmniejszy nieprzetworzony: 18

Minimum z 16 i 181 7 8 9 11 12 14 16

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 42 / 47

Page 69: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Operacja scalania

Zapamietujemy pozycje najmniejszego elementu w kazdejposortowanej połówce.

Wstawiamy najmniejszy z dwóch wskazywanych elementów dotablicy pomocniczej.

Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkichelementów.

1 7 11 14 16Najmniejszy nieprzetworzony: -

8 9 12 18 20Nieprzetworzone: 18 i 20

1 7 8 9 11 12 14 16 18 20

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 43 / 47

Page 70: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - implementacja

MergeSort ( i n t A [ ] , i n t l e f t , i n t r i g h t ){

i f ( r i g h t > l e f t ) {mid = ( l e f t + r i g h t ) / 2 ;MergeSort (A, l e f t , mid ) ;MergeSort (A, mid +1 , r i g h t ) ;merge (A, l e f t , mid , r i g h t )

}}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 44 / 47

Page 71: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - implementacja

vo id merge (T∗ a , i n t l e f t , i n t mid , i n t r i g h t ){

i n t ∗ t = c a l l o c ( r i g h t +1 , s i z e o f ( i n t ) ) ;i n t n = r i g h t − l e f t + 1 ;i n t i = l e f t , j = mid + 1 , k = 0 ;wh i le ( i <= mid && j <= r i g h t ) {

i f ( a [ i ] < a [ j ] ) t [ k ++] = a [ i ++ ] ;e lse t [ k ++] = a [ j ++ ] ;

}wh i le ( i <= mid ) { / / Dolaczanie koncowki p ie rwsze j p o d ta b l i cy

t [ k ++] = a [ i ++ ] ;}wh i le ( j <= r i g h t ) { / / Dolaczanie koncowki d r u g i e j p o d ta b l i cy

t [ k ++] = a [ j ++ ] ;}/ / Kopiowanie t a b l i c y pomocniczejf o r ( k = 0 ; k < n ; ++k ) a [ l e f t + k ] = t [ k ] ;f r e e ( t )

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 45 / 47

Page 72: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Koszt algorytmu

T (n) MergeSort A[1..n]Θ(1) Jesli n = 1, to koniec

2 · T (n/2) Jesli n ≥ 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n].Θ(n) Scal obie połowy A w jedna posortowana tablice.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 46 / 47

Page 73: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Koszt algorytmu

T (n) MergeSort A[1..n]Θ(1) Jesli n = 1, to koniec

2 · T (n/2) Jesli n ≥ 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n].Θ(n) Scal obie połowy A w jedna posortowana tablice.

T (n) ={

Θ(1) n = 12 · T (n/2) + Θ(n) n > 1

Na podstawie Twierdzenia 1 mozna pokazac, ze powyzsze równanierekurencyjne ma nastepujace rozwiazanie:

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 46 / 47

Page 74: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Koszt algorytmu

T (n) MergeSort A[1..n]Θ(1) Jesli n = 1, to koniec

2 · T (n/2) Jesli n ≥ 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n].Θ(n) Scal obie połowy A w jedna posortowana tablice.

T (n) ={

Θ(1) n = 12 · T (n/2) + Θ(n) n > 1

Na podstawie Twierdzenia 1 mozna pokazac, ze powyzsze równanierekurencyjne ma nastepujace rozwiazanie:

nlogb(a) = nlog2(2) = n1 = n ⇒ (Przypadek2)

T (n) = Θ(n · log2(n))

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 46 / 47

Page 75: Algorytmy i Struktury Danych. - Home Page of Bożena ... · kilka mniejszych podproblemów podobnych do pocza˛tkowego problemu. ... R.L. Wprowadzenie do algorytmów, Roz. 4 (str.

Sortowanie przez scalanie - Koszt algorytmu

Złozonosc pesymistyczna:Operacja dominujaca: porównywanie elementów.Koszt: T (n) = Θ(n · log2(n))

Złozonosc optymistyczna:Operacja dominujaca: porównywanie elementów.Koszt: T (n) = Θ(n · log2(n)).

Złozonosc pamieciowa: O(1).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 2 47 / 47