Sortowanie przez scalanie

Wielkość: px
Rozpocząć pokaz od strony:

Download "Sortowanie przez scalanie"

Transkrypt

1 Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca / 17

2 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie przez scalanie Analiza złożoności czasowej 4 Sortowanie przez scalanie - podsumowanie (Wykład 2) Sortowanie przez scalanie 12 marca / 17

3 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

4 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

5 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, (Wykład 2) Sortowanie przez scalanie 12 marca / 17

6 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], (Wykład 2) Sortowanie przez scalanie 12 marca / 17

7 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

8 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : (Wykład 2) Sortowanie przez scalanie 12 marca / 17

9 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : Rekurencyjna struktura algorytmu - w celu rozwiązania danego problemu algorytm wywołuje sam siebie do rozwiązywania podobnych podproblemów. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

10 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : Rekurencyjna struktura algorytmu - w celu rozwiązania danego problemu algorytm wywołuje sam siebie do rozwiązywania podobnych podproblemów. Sortowanie przez scalanie (von Neumann, 1945), sortowanie szybkie (Hoare, 1959), algorytm Karatsuba (1960), algorytm Strassena (1969),... (Wykład 2) Sortowanie przez scalanie 12 marca / 17

11 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : Rekurencyjna struktura algorytmu - w celu rozwiązania danego problemu algorytm wywołuje sam siebie do rozwiązywania podobnych podproblemów. Sortowanie przez scalanie (von Neumann, 1945), sortowanie szybkie (Hoare, 1959), algorytm Karatsuba (1960), algorytm Strassena (1969),... decrease-and-conquer: wyszukiwanie binarne (Mauchly, 1946; Babilon, 200 p.n.e.), algorytm Euklidesa (300 p.n.e),... (Wykład 2) Sortowanie przez scalanie 12 marca / 17

12 divide et impera - dziel i zwyciężaj Dziel: dzielimy problem na podproblemy. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

13 divide et impera - dziel i zwyciężaj Dziel: dzielimy problem na podproblemy. Zwyciężaj: rozwiązujemy podproblemy rekurencyjnie lub używamy metod bezpośrednich, jeżeli nie wymagają wykorzystania rekursji. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

14 divide et impera - dziel i zwyciężaj Dziel: dzielimy problem na podproblemy. Zwyciężaj: rozwiązujemy podproblemy rekurencyjnie lub używamy metod bezpośrednich, jeżeli nie wymagają wykorzystania rekursji. Połącz: łączymy rozwiązania podproblemów, aby otrzymać rozwiązanie problemu początkowego. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

15 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

16 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

17 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

18 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

19 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. Scalanie - łączenie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

20 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. Scalanie - łączenie: Nie ma rekursji gdy sortujemy ciąg jednoelementowy. Automatycznie posortowany. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

21 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. Scalanie - łączenie: Nie ma rekursji gdy sortujemy ciąg jednoelementowy. Automatycznie posortowany. Podstawową operacją algorytmu sortowania przez scalanie jest łączenie dwóch posortowanych ciągów w kroku połącz. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

22 Scalanie - MERGE(A, p, q, r) A - tablica, p, q, r - indeksy, takie że p q < r. Założenie: Podtablice A[p...q], A[q+1...r] są posortowane. Procedura MERGE (A, p, q, r) scala podtablice A[p...q] oraz A[q+1...r] w posortowaną tablicę A[p...r]. Czas działania: Θ(n), gdzie n = r p + 1. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

23 Scalanie - MERGE(A, p, q, r) MERGE(A, p, q, r) 1: a q p + 1 2: b r q 3: //utworz tablice L[1..a + 1] oraz R[1..b + 1] 4: for i 1 to a do 5: L[i] A[p + i 1] 6: for j 1 to b do 7: R[j] A[q + j] 8: L[a + 1] 9: R[b + 1] 10: i 1 11: j 1 12:... (Wykład 2) Sortowanie przez scalanie 12 marca / 17

24 Scalanie - MERGE(A, p, q, r) cd. MERGE(A, p, q, r) cd. 12: for k p to r do 13: if L[i] R[j] then 14: A[k] L[i] 15: i i : else 17: A[k] R[j] 18: j j + 1 (Wykład 2) Sortowanie przez scalanie 12 marca / 17

25 Scalanie - MERGE(A, p, q, r) Inicjalizacja: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

26 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

27 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

28 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

29 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

30 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

31 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: Wykonujemy r - p + 1 operacji, które zachowują następujący niezmiennik pętli: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

32 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: Wykonujemy r - p + 1 operacji, które zachowują następujący niezmiennik pętli: i) Na początku każdej iteracji pętli for podtablica A[p..k-1] zawiera k - p najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

33 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: Wykonujemy r - p + 1 operacji, które zachowują następujący niezmiennik pętli: i) Na początku każdej iteracji pętli for podtablica A[p..k-1] zawiera k - p najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. ii) L[i] oraz R[j] są najmniejszymi elementami swoich tablic, które nie zostały jeszcze skopiowane z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

34 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

35 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

36 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

37 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

38 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. Jeżeli L[i] R[j] to L[i] jest najmniejszym elementem nie skopiowanym jeszcze z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

39 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. Jeżeli L[i] R[j] to L[i] jest najmniejszym elementem nie skopiowanym jeszcze z powrotem do A. Podtablica A[p..k-1] zawiera k p najmniejszych elementów, zatem po skopiowaniu w wierszu 14 elementu L[i] do A[k] podtablica A[p..k] będzie zawierać k p + 1 najmniejszych elementów. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

40 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. Jeżeli L[i] R[j] to L[i] jest najmniejszym elementem nie skopiowanym jeszcze z powrotem do A. Podtablica A[p..k-1] zawiera k p najmniejszych elementów, zatem po skopiowaniu w wierszu 14 elementu L[i] do A[k] podtablica A[p..k] będzie zawierać k p + 1 najmniejszych elementów. Zwiększenie k oraz i powoduje odtworzenie niezmiennika pętli przed następną iteracją. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

41 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

42 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

43 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. Na mocy niezmiennika pętli podtablica A[p..k-1], czyli A[p..r], zawiera k p = r p + 1 najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

44 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. Na mocy niezmiennika pętli podtablica A[p..k-1], czyli A[p..r], zawiera k p = r p + 1 najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. Tablice L i R zawierają łącznie a + b + 2 = r p + 3 elementy. Wszystkie elementy, poza wartownikami zostały skopiowane z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

45 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. Na mocy niezmiennika pętli podtablica A[p..k-1], czyli A[p..r], zawiera k p = r p + 1 najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. Tablice L i R zawierają łącznie a + b + 2 = r p + 3 elementy. Wszystkie elementy, poza wartownikami zostały skopiowane z powrotem do A. Algorytm jest poprawny. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

46 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

47 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

48 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. W przeciwnym razie znajdujemy q, które dzieli A[p... r] na dwie podtablice: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

49 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. W przeciwnym razie znajdujemy q, które dzieli A[p... r] na dwie podtablice: a) A[p...q] zawierającą floor(n/2) elementów, (Wykład 2) Sortowanie przez scalanie 12 marca / 17

50 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. W przeciwnym razie znajdujemy q, które dzieli A[p... r] na dwie podtablice: a) A[p...q] zawierającą floor(n/2) elementów, b) A[q+1...r] zawierającą ceil(n/2) elementów. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

51 Sortowanie przez scalanie - MERGE-SORT(A, p, r) MERGE-SORT(A, p, r) 1: if p < r then( ) p + r 2: q floor 2 3: MERGE-SORT(A, p, q) 4: MERGE-SORT(A, q+1, r) 5: MERGE(A, p, q, r) (Wykład 2) Sortowanie przez scalanie 12 marca / 17

52 Sortowanie przez scalanie - MERGE-SORT(A, p, r) MERGE-SORT(A, p, r) 1: if p < r then( ) p + r 2: q floor 2 3: MERGE-SORT(A, p, q) 4: MERGE-SORT(A, q+1, r) 5: MERGE(A, p, q, r) Przykład (Wykład 2) Sortowanie przez scalanie 12 marca / 17

53 Sortowanie przez scalanie - drzewo wywołań rekurencyjnych MS(1,6) MS(1,3) MS(4,6) M(1,3,6) MS(1,2) MS(3,3) M(1,2,3) MS(4,5) MS(6,6) M(4,5,6) MS(1,1) MS(2,2) M(1,1,2) MS(4,4) MS(5,5) M(4,4,5) (Wykład 2) Sortowanie przez scalanie 12 marca / 17

54 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

55 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). (Wykład 2) Sortowanie przez scalanie 12 marca / 17

56 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, (Wykład 2) Sortowanie przez scalanie 12 marca / 17

57 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, czas działania: T (n) = 2T ( n 2 ), iii) Połącz: Procedura MERGE działa w czasie P(n) = Θ(n). (Wykład 2) Sortowanie przez scalanie 12 marca / 17

58 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, czas działania: T (n) = 2T ( n 2 ), iii) Połącz: Procedura MERGE działa w czasie P(n) = Θ(n). Złożoność obliczeniowa sortowanie przez scalanie - równanie rekurencyjne: { Θ(1), jeżeli n = 1, T (n) = ( n ) 2T + Θ(n), jeżeli n > 1. 2 (Wykład 2) Sortowanie przez scalanie 12 marca / 17

59 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, czas działania: T (n) = 2T ( n 2 ), iii) Połącz: Procedura MERGE działa w czasie P(n) = Θ(n). Złożoność obliczeniowa sortowanie przez scalanie - równanie rekurencyjne: { Θ(1), jeżeli n = 1, T (n) = ( n ) 2T + Θ(n), jeżeli n > 1. 2 Złożoność obliczeniowa sortowanie przez scalanie - korzystając z twierdzenia o rekurencji uniwersalnej: T (n) = Θ(n log 2 (n)). (Wykład 2) Sortowanie przez scalanie 12 marca / 17

60 Sortowanie przez scalanie Dell Precision 5820: Intel(R) Xeon(R) W-2155 CPU 3.30GHz T MS (n) - czas sortowania [sekundy] MERGE-SORT T MS (n)=58.07*10-10 *n*log 2 (n) [sekundy] INSERTION-SORT T IS (n)=8.65*10-14 *n 2 [godziny] T IS (n)=2.97*10-10 *n 2 [sekundy] T IS (n) - czas sortowania [godziny] 0 0 1x10 6 2x10 6 3x10 6 4x10 6 5x10 6 6x10 6 7x10 6 8x10 6 9x10 6 1x10 70 n - rozmiar tablicy (Wykład 2) Sortowanie przez scalanie 12 marca / 17

61 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: (Wykład 2) Sortowanie przez scalanie 12 marca / 17

62 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), (Wykład 2) Sortowanie przez scalanie 12 marca / 17

63 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), (Wykład 2) Sortowanie przez scalanie 12 marca / 17

64 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). (Wykład 2) Sortowanie przez scalanie 12 marca / 17

65 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, (Wykład 2) Sortowanie przez scalanie 12 marca / 17

66 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

67 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. Stabilność sortowania: stabilne - nie zmiennia względnego porządku pomiędzy jednakowymi elementami tablicy. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

68 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. Stabilność sortowania: stabilne - nie zmiennia względnego porządku pomiędzy jednakowymi elementami tablicy. Łatwy do zrównoleglenia. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

69 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. Stabilność sortowania: stabilne - nie zmiennia względnego porządku pomiędzy jednakowymi elementami tablicy. Łatwy do zrównoleglenia. Timsort - stabilny algorytm sortowania będący hybrydą sortowania przez scalanie i przez wstawianie - standardowy algorytm sortowania dla języka Python, platformy Android, Google Chrome. (Wykład 2) Sortowanie przez scalanie 12 marca / 17

Wykład 3. Metoda dziel i zwyciężaj

Wykład 3. Metoda dziel i zwyciężaj Wykład 3 Metoda dziel i zwyciężaj 1 Wprowadzenie Technika konstrukcji algorytmów dziel i zwyciężaj. przykładowe problemy: Wypełnianie planszy Poszukiwanie (binarne) Sortowanie (sortowanie przez łączenie

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

Strategia dziel i zwyciężaj Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą

Bardziej szczegółowo

Efektywna metoda sortowania sortowanie przez scalanie

Efektywna metoda sortowania sortowanie przez scalanie Efektywna metoda sortowania sortowanie przez scalanie Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Metoda dziel i zwycięŝaj Dzielimy

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych

Bardziej szczegółowo

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym

Bardziej szczegółowo

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n ) SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Sortowanie danych. Jolanta Bachan. Podstawy programowania Sortowanie danych Podstawy programowania 2013-06-06 Sortowanie przez wybieranie 9 9 9 9 9 9 10 7 7 7 7 7 10 9 1 3 3 4 10 7 7 10 10 10 10 4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 3 1 1 1 1 1 1 Gurbiel et al. 2000

Bardziej szczegółowo

Sortowanie przez wstawianie

Sortowanie przez wstawianie Sortowanie przez wstawianie Wykład 1 26 lutego 2019 (Wykład 1) Sortowanie przez wstawianie 26 lutego 2019 1 / 25 Outline 1 Literatura 2 Algorytm 3 Problem sortowania Pseudokod 4 Sortowanie przez wstawianie

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe 15 stycznia 2019 Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r P Jaka wartość zostanie zwrócona

Bardziej szczegółowo

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne). [12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne). Tworzenie projektów informatycznych opiera się w dużej mierze na formułowaniu i implementacji algorytmów,

Bardziej szczegółowo

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Wykład 5. Sortowanie w czasie liniowologarytmicznym Wykład 5 Sortowanie w czasie liniowologarytmicznym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n 2 Zestawienie

Bardziej szczegółowo

Algorytm selekcji Hoare a. Łukasz Miemus

Algorytm selekcji Hoare a. Łukasz Miemus Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego

Bardziej szczegółowo

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury

Bardziej szczegółowo

Wykład 2. Poprawność algorytmów

Wykład 2. Poprawność algorytmów Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm

Bardziej szczegółowo

Problemy porządkowe zadania

Problemy porządkowe zadania Problemy porządkowe Problemy porządkowe zadania Problemy porządkowe to zbiór różnych zadań obliczeniowych związanych z porządkowaniem zbioru danych i wyszukiwaniem informacji na takim zbiorze. Rodzaje

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu

Bardziej szczegółowo

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: Rekurencje Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: T(n) = Θ(1) (dla n = 1) T(n) = 2 T(n/2) + Θ(n) (dla n

Bardziej szczegółowo

Laboratoria nr 1. Sortowanie

Laboratoria nr 1. Sortowanie Laboratoria nr 1 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) 4. Sortowanie przez zliczanie (CS) 5. Sortowanie kubełkowe (BS) 6. Sortowanie

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

Programowanie dynamiczne cz. 2

Programowanie dynamiczne cz. 2 Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy

Bardziej szczegółowo

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe.

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe. 1 Tematy wykładu: problem sortowania sortowanie przez wybór (SelectionSort) sortowanie przez wstawianie (InsertionSort) sortowanie przez złaczanie (MergeSort) struktura danych list dowiązaniowych Input:

Bardziej szczegółowo

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel Wstęp do programowania Dziel i rządź Piotr Chrząstowski-Wachtel Divide et impera Starożytni Rzymianie znali tę zasadę Łatwiej się rządzi, jeśli poddani są podzieleni Nie chodziło im jednak bynajmniej o

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 9. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 9. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 9 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Zasada dziel i zwyciężaj Przykłady znajdowanie

Bardziej szczegółowo

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj Techniki konstruowania algorytmów Metoda dziel i zwyciężaj Technika dziel i zwyciężaj Aby rozwiązać problem techniką dziel i zwyciężaj musi on wykazywać własność podstruktury rozwiązanie problemu można

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 5 część I 2 Iteracja Rekurencja Indukcja Iteracja Rekurencja Indukcja Algorytmy sortujące Rozwiazywanie

Bardziej szczegółowo

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy 1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com

Bardziej szczegółowo

Informatyka A. Algorytmy

Informatyka A. Algorytmy Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy i Struktury Danych, 2. ćwiczenia Algorytmy i Struktury Danych, 2. ćwiczenia 2017-10-13 Spis treści 1 Optymalne sortowanie 5 ciu elementów 1 2 Sortowanie metodą Shella 2 3 Przesunięcie cykliczne tablicy 3 4 Scalanie w miejscu dla ciągów

Bardziej szczegółowo

Struktury Danych i Złożoność Obliczeniowa

Struktury Danych i Złożoność Obliczeniowa Struktury Danych i Złożoność Obliczeniowa Zajęcia 2 Algorytmy wyszukiwania, sortowania i selekcji Sortowanie bąbelkowe Jedna z prostszych metod sortowania, sortowanie w miejscu? Sortowanie bąbelkowe Pierwsze

Bardziej szczegółowo

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Danuta Szeliga AGH Kraków Spis treści I 1 Wstęp 2 Metody proste 3 Szybkie metody sortowania 4 Algorytmy hybrydowe Sortowanie hybrydowe Sortowanie introspektywne

Bardziej szczegółowo

Wykład 4: Iteracja, indukcja i rekurencja

Wykład 4: Iteracja, indukcja i rekurencja Teoretyczne podstawy informatyki Wykład 4: Iteracja, indukcja i rekurencja Prof. dr hab. Elżbieta Richter-Wąs 1 Słowem wstępu Iteracja, indukcja i rekurencja to podstawowe zagadnienia pojawiające się przy

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Organizacja wykładu. Problem Sortowania. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

Bardziej szczegółowo

Algorytmy i Struktury Danych. (c) Marcin Sydow. Introduction. QuickSort. Sortowanie 2. Limit. CountSort. RadixSort. Summary

Algorytmy i Struktury Danych. (c) Marcin Sydow. Introduction. QuickSort. Sortowanie 2. Limit. CountSort. RadixSort. Summary Sortowanie 2 Zawartość wykładu: Własność stabilności algorytmów sortujących algorytm sortowania szybkiego () czy można sortować szybciej niż ze złożonością Θ(n log(n))? algorytm sortowania przez zliczanie

Bardziej szczegółowo

Zaawansowane algorytmy. Wojciech Horzelski

Zaawansowane algorytmy. Wojciech Horzelski Zaawansowane algorytmy Wojciech Horzelski 1 Organizacja Wykład: poniedziałek 8 15-10 Aula Ćwiczenia: Każdy student musi realizować projekty (treść podawana na wykładzie) : Ilość projektów : 5-7 Na realizację

Bardziej szczegółowo

Programowanie dynamiczne i algorytmy zachłanne

Programowanie dynamiczne i algorytmy zachłanne Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii

Bardziej szczegółowo

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

Sortowanie przez wstawianie Insertion Sort

Sortowanie przez wstawianie Insertion Sort Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,

Bardziej szczegółowo

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.) egzamin podstawowy 7 lutego 2017 r. wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.) Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek imię, nazwisko i nr indeksu:..............................................................

Bardziej szczegółowo

Sortowanie w czasie liniowym

Sortowanie w czasie liniowym Sortowanie w czasie liniowym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n Po co sortować? Podstawowy problem

Bardziej szczegółowo

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na

Bardziej szczegółowo

Zasady analizy algorytmów

Zasady analizy algorytmów Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Laboratoria nr 1. Sortowanie

Laboratoria nr 1. Sortowanie Laboratoria nr 1 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) 4. Sortowanie przez zliczanie (CS) 5. Sortowanie kubełkowe (BS) 6. Sortowanie

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Zasada dziel i rządź i analiza złożoności 1 Zasada dziel i rządź i analiza złożoności Definition : Zbiór wartości: nieograniczonej

Bardziej szczegółowo

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %). Powrót Twój wynik: 4 punktów na 6 możliwych do uzyskania (6667 %). Nr Opcja Punkty Poprawna Odpowiedź Rozważmy algorytm AVLSequence postaci: 1 Niech drzewo będzie rezultatem działania algorytmu AVLSequence

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących

Bardziej szczegółowo

Technologie informacyjne Wykład VII-IX

Technologie informacyjne Wykład VII-IX Technologie informacyjne -IX A. Matuszak 19 marca 2013 A. Matuszak Technologie informacyjne -IX Rekurencja A. Matuszak (2) Technologie informacyjne -IX Gotowanie jajek na miękko weż czysty garnek włóż

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Sortowanie. LABORKA Piotr Ciskowski

Sortowanie. LABORKA Piotr Ciskowski Sortowanie LABORKA Piotr Ciskowski main Zaimplementuj metody sortowania przedstawione w następnych zadaniach Dla każdej metody osobna funkcja Nagłówek funkcji wg uznania ale wszystkie razem powinny być

Bardziej szczegółowo

1. Analiza algorytmów przypomnienie

1. Analiza algorytmów przypomnienie 1. Analiza algorytmów przypomnienie T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Wprowadzenie do algorytmów, rozdziały 1-4 Wydawnictwa naukowo-techniczne (2004) Jak mierzyć efektywność algorytmu?

Bardziej szczegółowo

Algorytmy sortujące 1

Algorytmy sortujące 1 Algorytmy sortujące 1 Sortowanie Jeden z najczęściej występujących, rozwiązywanych i stosowanych problemów. Ułożyć elementy listy (przyjmujemy: tablicy) w rosnącym porządku Sortowanie może być oparte na

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny i programowanie dynamiczne Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 i programowanie dynamiczne Outline 1 i programowanie dynamiczne i programowanie dynamiczne Rekurencyjny zapis rozwiązania

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4: Iteracja, indukcja i rekurencja http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Słowem wstępu Iteracja, indukcja

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział

Bardziej szczegółowo

Programowanie dynamiczne (optymalizacja dynamiczna).

Programowanie dynamiczne (optymalizacja dynamiczna). Programowanie dynamiczne (optymalizacja dynamiczna). W wielu przypadkach zadania, których złożoność wynikająca z pełnego przeglądu jest duża (zwykle wyk ładnicza) można rozwiązać w czasie wielomianowym

Bardziej szczegółowo

Rekurencja. Przykład. Rozważmy ciąg

Rekurencja. Przykład. Rozważmy ciąg Rekurencja Definicje rekurencyjne Definicja: Mówimy, iż ciąg jest zdefiniowany rekurencyjnie, jeżeli: (P) Określony jest pewien skończony zbiór wyrazów tego ciągu, zwykle jest to pierwszy wyraz tego ciągu

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 2 2 Problemy algorytmiczne Klasy problemów algorytmicznych Liczby Fibonacciego Przeszukiwanie tablic Największy

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Problem Sortowania. Metoda Dziel i zwyciężaj. dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew 1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325 PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Problem Sortowania. Metoda Dziel i zwyciężaj - cd. dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

PODSTAWY INFORMATYKI wykład 5.

PODSTAWY INFORMATYKI wykład 5. PODSTAWY INFORMATYKI wykład 5. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutnicza w Krakowie WEAIiE,

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

INFORMATYKA SORTOWANIE DANYCH. INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania

Bardziej szczegółowo

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili rekurencja 1 Rekurencja/rekursja Alternatywny dla pętli sposób powtarzania pewnych czynności; kolejny etap podzadanie poprzedniego Rekursja może być zamieniona na iteracje Cechy rekurencji Rozłożenie problemu

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Co to jest algorytm? Zapis algorytmów Algorytmy

Bardziej szczegółowo

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk WPROWADZENIE DO ALGORYTMIKI www.agh.edu.pl ALGORYTMIKA Algorytmika

Bardziej szczegółowo

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s]. Zadanie 1. Wiązka zadań Od szczegółu do ogółu Rozważmy następujący algorytm: Dane: Algorytm 1: k liczba naturalna, A[1...2 k ] tablica liczb całkowitych. n 1 dla i=1,2,,k wykonuj n 2n s 1 dopóki s

Bardziej szczegółowo

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln) Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln) 1. Informacje ogólne

Bardziej szczegółowo

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013 Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (03-MO2S-12-MPIn) 1. Informacje ogólne koordynator

Bardziej szczegółowo

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego

Bardziej szczegółowo

Podyplomowe Studium Informatyki

Podyplomowe Studium Informatyki Podyplomowe Studium Informatyki Wstęp do informatyki 30 godz. wykładu dr inż. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura D. Harel, Rzecz o istocie informatyki. Algorytmika, WNT

Bardziej szczegółowo

5. Podstawowe algorytmy i ich cechy.

5. Podstawowe algorytmy i ich cechy. 23 5. Podstawowe algorytmy i ich cechy. 5.1. Wyszukiwanie liniowe i binarne 5.1.1. Wyszukiwanie liniowe Wyszukiwanie jest jedną z najczęściej wykonywanych operacji na strukturach danych i dotyczy wszystkich,

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych ĆWICZENIE 2 - WYBRANE ZŁOŻONE STRUKTURY DANYCH - (12.3.212) Prowadząca: dr hab. inż. Małgorzata Sterna Informatyka i3, poniedziałek godz. 11:45 Adam Matuszewski, nr 1655 Oliver

Bardziej szczegółowo

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA POZIOM ROZSZERZONY FORMUŁA OD 2015 ( NOWA MATURA ) ZASADY OCENIANIA ROZWIĄZAŃ ZADAŃ ARKUSZ MIN-R1,R2 MAJ 2018 Uwaga: Akceptowane są wszystkie odpowiedzi

Bardziej szczegółowo

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego. Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego

Bardziej szczegółowo

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

Bardziej szczegółowo

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady

Bardziej szczegółowo

Wykład 5: Iteracja, indukcja i rekurencja Sortowanie

Wykład 5: Iteracja, indukcja i rekurencja Sortowanie Teoretyczne podstawy informatyki Wykład 5: Iteracja, indukcja i rekurencja Sortowanie Prof. dr hab. Elżbieta Richter-Wąs 1 30.10.2012 Słowem wstępu Iteracja, indukcja i rekurencja to podstawowe zagadnienia

Bardziej szczegółowo

Sortowanie bąbelkowe

Sortowanie bąbelkowe 1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

Jeszcze o algorytmach

Jeszcze o algorytmach Jeszcze o algorytmach Przykłady różnych, podstawowych algorytmów 11.01.2018 M. Rad Plan Powtórka Znajdowanie najmniejszego elementu Segregowanie Poszukiwanie przez połowienie Wstawianie Inne algorytmy

Bardziej szczegółowo

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom

Bardziej szczegółowo

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego

Bardziej szczegółowo

Wyszukiwanie. Wyszukiwanie binarne

Wyszukiwanie. Wyszukiwanie binarne Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeŝeli element w tablicy nie występuje.

Bardziej szczegółowo