Lekcja 5: Algorytmy wyszukiwania i sortowania. Odpowiedź S. Hoa Nguyen

Download (0)

Full text

(1)

Lekcja 5: Algorytmy wyszukiwania i sortowania. Odpowiedź

S. Hoa Nguyen

1 Materiał

1. Problem k-tego co do wielkości

• Algorytm Hoare.

• Algorytm BFPRT (Bluma-Floyda-Pratta-Rivesta-Trajana) - Magiczne piątki.

• Algorytm sortowania SelectionSort, InsertionSort, QuickSort.

2 Zadania

1. Załóżmy, że pewien algorytm A, dla danego ciągu wejściowego S rozmiaru n składa się z trzech części A1, A2, A3:

• A1- wyszukanie drugiego co do wielkości elementu w S zapomocą metody optymalnej,

• A2 - wyszukanie jednocześnie minimalnego oraz maksymalnego elementu w S za pomocą metody optymalnej,

• A3- wyszukanie k-tego co do wielkości elementu w S za pomocą algorytmu Hoare’a.

Podaj dokładne oszacowanie złożoności całego algorytmu w przypadku oczekiwanym (średnim) i pesymistycznym.

Odpowiedź: A(n) = Θ(n) + Θ(n) + Θ(n) = Θ(n) W (n) = Θ(n) + Θ(n) + Θ(kn) = Θ(kn)

2. Przedstaw działanie algorytmu Split((Rysunek ??) i Partition (Rysunek ??) zastosowanego do następującego ciągu:

[9, 3, 2, 10, 7, 15, 4, 5, 12, 13, 14, 1, 11, 3, 23, 20]

Odpowiedź: na Rysunku 1

3. Przedstaw działanie algorytmu Hoare’a wyszukiwania 5-tego elementu co do wielkości w podanym niżej ciągu:

[9, 3, 2, 10, 7, 15, 4, 5, 12, 13, 14, 1, 11, 3, 23, 20]

Odpowiedź:

Algorytm HoarePartition: k =5 I iteracja: Partition dla pełnej tablicy:

9, 3, 2, 10, 7, 15, 4, 5, 12, 13, 14, 1, 11, 3, 23, 20

(2)

Rysunek 1: Symulacja Partition i Split

(23 <-> 20)

9, 3, 2, 10, 7, 15, 4, 5, 12, 13, 14, 1, 11, 3, 20, 23

II iteracja: Partition dla tablicy po lewej stronie mediany 20 (k=3):

9, 3, 2, 10, 7, 15, 4, 5, 12, 13, 14, 1, 11, 3 ( 9<->3, 9<->2,9<->1,10<->3)

3, 2, 1, 3, 7, 15, 4, 5, 12, 13, 14, 9, 11, 10

III iteracja: Partition dla tablicy po prawej stronie mediany 3 (k=3):

7, 15, 4, 5, 12, 13, 14, 9, 11, 10 (15 <->4, 15 <->5, 15 <-> 9, 12 <->10)

7, 4, 5, 9, 10, 13, 14, 15, 11, 12

IV iteracja: Partition dla tablicy po prawej stronie mediany 10 (k=3):

13, 14, 15, 11, 12 (13 <->11,14 <->12)

11, 12, 15, 13, 14

(3)

V iteracja: Partition dla tablicy po prawej stronie mediany 12 (k=3):

15, 13, 14 (15 <-> 13, 15 <->14)

13, 14, 15

VI iteracja: Partition dla tablicy po lewej stronie mediany (k=1):

13

Stop. Odpowiedź: piąty element co do wielkości jest 13.

4. Przeanalizuje działanie algorytmu BF P RT kolejno dla ciągu:

[10, 2, 5, 10, 8, 3, 4, 7, 9, 7, 6, 10, 5, 8, 4]

5. 2. Przedstaw działania algorytmów SelectionSort, InsertionSort i QuickSort na ciągu wejściowym:

[4, 6, 1, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 0]

(a) InsertionSort: 4, 6, 1, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 0 (6<->1, 4<->1) 1, 4, 6, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 0 (8<->3, 6<->3, 4 <-> 3)

1, 3, 4, 6, 8, 4, 2, 5, 9, 12, 7, 10, 13, 0 (8<->4, 6<->4)

1, 3, 4, 4, 6, 8, 2, 5, 9, 12, 7, 10, 13, 0 (8<->2, 6<->2,4<->2,4<->2,3<->2)

1, 2, 3, 4, 4, 6, 8, 5, 9, 12, 7, 10, 13, 0 (8<->5, 6<->5)

1, 2, 3, 4, 4, 5, 6, 8, 9, 12, 7, 10, 13, 0 (12<->7, 9<->7, 8<->7)

1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 12, 10, 13, 0 (12<->10)

1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 12, 13, 0 (13<->0, 12 <->0, 10<->0, 9 <->0, 8<->0,..., 1<->0) Wynik: 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 12, 10, 13

(4)

(b) SelectionSort:

4, 6, 1, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 0 (4 <->0)

0, 6, 1, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 4 (6<->1)

0, 1, 6, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 4 (6<->2)

0, 1, 2, 8, 3, 4, 6, 5, 9, 12, 7, 10, 13, 4 (8<->3)

0, 1, 2, 3, 8, 4, 6, 5, 9, 12, 7, 10, 13, 4 (8<->4)

0, 1, 2, 3, 4, 8, 6, 5, 9, 12, 7, 10, 13, 4 (8<->4)

0, 1, 2, 3, 4, 4, 6, 5, 9, 12, 7, 10, 13, 8 (6<->5)

0, 1, 2, 3, 4, 4, 5, 6, 9, 12, 7, 10, 13, 8 (9<->7)

0, 1, 2, 3, 4, 4, 5, 6, 7, 12, 9, 10, 13, 8 (12<->8)

0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 13, 12 (13<->12)

Wynik: 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 12, 13 (c) QuickSortPartition

I iteracja: Partition dla całej tablicy:

4, 6, 1, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 0 (4 <->0)

0, 6, 1, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 4

II iteracja: Lewa tablica jest pusta, zatem Partition dla prawej tablicy (mediana 0):

6, 1, 8, 3, 4, 2, 5, 9, 12, 7, 10, 13, 4

(5)

(6 <->1,6<->3,8<->4, 6<->2, 8<->4)

1, 3, 4, 2, 4, 6, 5, 9, 12, 7, 10, 13, 8 III iteracja: Partition dla lewej tablicy (mediana 4):

1, 3, 4, 2 (3 <->2)

1, 2, 4, 3

IV iteracja: Lewa tablica zawiera jeden element, zatem Partition dla prawej tablicy (me- diana 2):

4, 3 (4 <->3)

3, 4

Lewa tablica (mediana 3) jest pusta, prawa tablica zawiera jeden element ->stop.

Lewa tablica (mediana 4) została uporządkowana:

1, 2, 3, 4

V iteracja: Partition dla prawej tablicy (mediana 4):

6, 5, 9, 12, 7, 10, 13, 8 (9 <->7, 12 <->8)

6, 5, 7, 8, 9, 10, 13, 12

VI iteracja: Partition dla lewej tablicy (mediana 8):

6, 5, 7 (mediana 7) (bez zmian)

VII iteracja: Partition dla lewej tablicy (mediana 7):

6, 5 (mediana 5) (6<->5)

5, 6

Lewa tablica (mediana 8) została uporządkowana: [5, 6,7, 8]

VIII iteracja: Partition dla prawej tablicy (mediana 8):

9, 10, 13, 12

(6)

( 13 <->12)

9, 10, 12, 13

IX iteracja: Partition dla lewej tablicy (mediana 12):

9, 10 (bez zmian) -> stop

Prawa tablica (mediana 8) została uporządkowana: [9, 10, 12, 13]

Prawa tablica (mediana 4) została uporządkowana: [5, 6, 7, 8, 9, 10, 12, 13]

Prawa tablica (mediana 0) została uporządkowana: [1,2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 12, 13]

Cała tablica została uporządkowana: [0, 1,2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 12, 13]

Figure

Updating...

References

Related subjects :