Algorytmy i Struktury Danych.

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

Download "Algorytmy i Struktury Danych."

Transkrypt

1 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 3 1 / 49

2 Jak szybko można sortować? Wszystkie do tej pory omówione algorytmy sortujace należa do grupy sortowania przez porównywanie - czyli podstawowa operacja ustalajaca porzadek pomiędzy elementami jest opercja porównywania pary elementów (mniejsze niż, większe niż, mniejsze lub równe, większe lub równe, równe). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 2 / 49

3 Jak szybko można sortować? Wszystkie do tej pory omówione algorytmy sortujace należa do grupy sortowania przez porównywanie - czyli podstawowa operacja ustalajaca porzadek pomiędzy elementami jest opercja porównywania pary elementów (mniejsze niż, większe niż, mniejsze lub równe, większe lub równe, równe). Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Sortowanie przez wybieranie (ang. selection sort)) Sortowanie szybkie (ang. quicksort) Sortowanie przez kopcowanie (ang. heapsort) - omówione na wykładach późniejszych Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 2 / 49

4 Jak szybko można sortować? Wszystkie do tej pory omówione algorytmy sortujace należa do grupy sortowania przez porównywanie - czyli podstawowa operacja ustalajaca porzadek pomiędzy elementami jest opercja porównywania pary elementów (mniejsze niż, większe niż, mniejsze lub równe, większe lub równe, równe). Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Sortowanie przez wybieranie (ang. selection sort)) Sortowanie szybkie (ang. quicksort) Sortowanie przez kopcowanie (ang. heapsort) - omówione na wykładach późniejszych Najlepsza złożoność optymistyczna powyżej wymienionych algorytmów jest O(n log 2 n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 2 / 49

5 Jak szybko można sortować? Wszystkie do tej pory omówione algorytmy sortujace należa do grupy sortowania przez porównywanie - czyli podstawowa operacja ustalajaca porzadek pomiędzy elementami jest opercja porównywania pary elementów (mniejsze niż, większe niż, mniejsze lub równe, większe lub równe, równe). Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Sortowanie przez wybieranie (ang. selection sort)) Sortowanie szybkie (ang. quicksort) Sortowanie przez kopcowanie (ang. heapsort) - omówione na wykładach późniejszych Najlepsza złożoność optymistyczna powyżej wymienionych algorytmów jest O(n log 2 n). Czy można mieć lepszy algorytm sortujacy? Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 2 / 49

6 Jak szybko można sortować? Wszystkie do tej pory omówione algorytmy sortujace należa do grupy sortowania przez porównywanie - czyli podstawowa operacja ustalajaca porzadek pomiędzy elementami jest opercja porównywania pary elementów (mniejsze niż, większe niż, mniejsze lub równe, większe lub równe, równe). Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Sortowanie przez wybieranie (ang. selection sort)) Sortowanie szybkie (ang. quicksort) Sortowanie przez kopcowanie (ang. heapsort) - omówione na wykładach późniejszych Najlepsza złożoność optymistyczna powyżej wymienionych algorytmów jest O(n log 2 n). Czy można mieć lepszy algorytm sortujacy? W odpowiedzi na to pytanie pomoga drzewa decyzyjne. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 2 / 49

7 Drzewo decyzyjne - przykład Każdy wierzchołek wewnętrzny etykietowany jest przez i : j, gdzie i, j {1,..., n}. Lewe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Prawe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Sortowanie ciagu (a 1, a 2,..., a n ): 1:2 2:3 1:3 1: : Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 3 / 49

8 Drzewo decyzyjne - przykład Każdy wierzchołek wewnętrzny etykietowany jest przez i : j, gdzie i, j {1,..., n}. Lewe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Prawe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Sortowanie ciagu (a 1, a 2,..., a n ) = (9, 4, 6): 1:2 2:3 1:3 1: : Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 4 / 49

9 Drzewo decyzyjne - przykład Każdy wierzchołek wewnętrzny etykietowany jest przez i : j, gdzie i, j {1,..., n}. Lewe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Prawe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Sortowanie ciagu (a 1, a 2,..., a n ) = (9, 4, 6): 1:2 2:3 1:3 1: : Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 5 / 49

10 Drzewo decyzyjne - przykład Każdy wierzchołek wewnętrzny etykietowany jest przez i : j, gdzie i, j {1,..., n}. Lewe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Prawe podrzewo pokazuje kolejne porównywania w przypadku, gdy a i a j Sortowanie ciagu (a 1, a 2,..., a n ) = (9, 4, 6): 1:2 2:3 1:3 1: : Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 6 / 49

11 Drzewo decyzyjne - przykład Każdy liść zawiera permutację π(1),π(2),...,π(n) wskazujac a ustanowiony porzadek a π(1) a π(2) a π(n) Sortowanie ciagu (a 1, a 2,..., a n ) = (9, 4, 6): 1:2 2:3 1:3 1: : Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 7 / 49

12 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

13 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Drzewo decyzyjne zawiera wszystkie możliwe wykonania (porównywania) algorymu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

14 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Drzewo decyzyjne zawiera wszystkie możliwe wykonania (porównywania) algorymu. Jest dokładnie jedno drzewo decyzyjne dla wejścia o rozmiarze n - drzewo decyzyjne jest zależne od rozmiaru wejścia, tj. od n. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

15 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Drzewo decyzyjne zawiera wszystkie możliwe wykonania (porównywania) algorymu. Jest dokładnie jedno drzewo decyzyjne dla wejścia o rozmiarze n - drzewo decyzyjne jest zależne od rozmiaru wejścia, tj. od n. Rozmiar drzewa (ilość liści) jest wykładniczy ze wględu na rozmiar danych wejściowych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

16 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Drzewo decyzyjne zawiera wszystkie możliwe wykonania (porównywania) algorymu. Jest dokładnie jedno drzewo decyzyjne dla wejścia o rozmiarze n - drzewo decyzyjne jest zależne od rozmiaru wejścia, tj. od n. Rozmiar drzewa (ilość liści) jest wykładniczy ze wględu na rozmiar danych wejściowych. Z uwagi na powższe drzewa decyzyjne nie sa dogodna metoda reprezentacji algorymów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

17 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Drzewo decyzyjne zawiera wszystkie możliwe wykonania (porównywania) algorymu. Jest dokładnie jedno drzewo decyzyjne dla wejścia o rozmiarze n - drzewo decyzyjne jest zależne od rozmiaru wejścia, tj. od n. Rozmiar drzewa (ilość liści) jest wykładniczy ze wględu na rozmiar danych wejściowych. Z uwagi na powższe drzewa decyzyjne nie sa dogodna metoda reprezentacji algorymów. Drzewo decyzjyne nie jest jednak zupełnie bezużyteczne - pozwala na określenie dolnego ograniczenia dla optymistycznego czasu działania algorymu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

18 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Drzewo decyzyjne zawiera wszystkie możliwe wykonania (porównywania) algorymu. Jest dokładnie jedno drzewo decyzyjne dla wejścia o rozmiarze n - drzewo decyzyjne jest zależne od rozmiaru wejścia, tj. od n. Rozmiar drzewa (ilość liści) jest wykładniczy ze wględu na rozmiar danych wejściowych. Z uwagi na powższe drzewa decyzyjne nie sa dogodna metoda reprezentacji algorymów. Drzewo decyzjyne nie jest jednak zupełnie bezużyteczne - pozwala na określenie dolnego ograniczenia dla optymistycznego czasu działania algorymu. Czas działania algorytmu dla danego wejścia jest równy długości ścieżki w drzewie decyzyjnym dla tego wejścia. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

19 Drzewo decyzyjne Drzewo decyzyjne może modelować dowolna metodę sortujac a oparta na modelu porównywania elementów. Drzewo decyzyjne zawiera wszystkie możliwe wykonania (porównywania) algorymu. Jest dokładnie jedno drzewo decyzyjne dla wejścia o rozmiarze n - drzewo decyzyjne jest zależne od rozmiaru wejścia, tj. od n. Rozmiar drzewa (ilość liści) jest wykładniczy ze wględu na rozmiar danych wejściowych. Z uwagi na powższe drzewa decyzyjne nie sa dogodna metoda reprezentacji algorymów. Drzewo decyzjyne nie jest jednak zupełnie bezużyteczne - pozwala na określenie dolnego ograniczenia dla optymistycznego czasu działania algorymu. Czas działania algorytmu dla danego wejścia jest równy długości ścieżki w drzewie decyzyjnym dla tego wejścia. Czas pesymistyczny algorymu jest równy wysokości drzewa. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 49

20 Ograniczenie dolne dla sortowania opartego o drzewo decyzyjne Twierdzenie Każde drzewo decyzyjne, które może posortować n elementów ma wysokość Ω(n log 2 (n)). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 9 / 49

21 Ograniczenie dolne dla sortowania opartego o drzewo decyzyjne Twierdzenie Każde drzewo decyzyjne, które może posortować n elementów ma wysokość Ω(n log 2 (n)). Dowód Ponieważ mamy n! permutacji dla danego ciagu wejściowego o rozmiarze n, to drzewo powinno zawierać conajmniej n! liści. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 9 / 49

22 Ograniczenie dolne dla sortowania opartego o drzewo decyzyjne Twierdzenie Każde drzewo decyzyjne, które może posortować n elementów ma wysokość Ω(n log 2 (n)). Dowód Ponieważ mamy n! permutacji dla danego ciagu wejściowego o rozmiarze n, to drzewo powinno zawierać conajmniej n! liści. Drzewo binarne o wysokości h ma 2 h liści. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 9 / 49

23 Ograniczenie dolne dla sortowania opartego o drzewo decyzyjne Twierdzenie Każde drzewo decyzyjne, które może posortować n elementów ma wysokość Ω(n log 2 (n)). Dowód Ponieważ mamy n! permutacji dla danego ciagu wejściowego o rozmiarze n, to drzewo powinno zawierać conajmniej n! liści. Drzewo binarne o wysokości h ma 2 h liści. Zatem mamy: n! 2 h h log 2 (n!) log 2 ((n/e) n ) = n log 2 (n) n log 2 (e) h Ω(n log 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 9 / 49

24 Sortowanie stabilne Dana metoda sortowania jest stabilna, jeśli zachowuje względna kolejność elementów ze zdublowanymi kluczami. Przykładowo, jeżeli ułożona alfabetycznie listę studentów posortujemy według roku studiów, to metoda stabilna zwróci w wyniku alfabetycznie ułożona listę osób podzielona ze wzgledu na rok studiów. Metoda niestabilna pozwala na sortowanie tylko względem jednego klucza. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 10 / 49

25 Sortowanie stabilne - przykład Dane Wejściowe Sortowanie niestabilne Sortowanie stabilne Adams 1 Adams 1 Adams 1 Black 2 Smith 1 Smith 1 Brown 4 Washington 2 Black 2 Jackson 2 Jackson 2 Jackson 2 Jones 4 Black 2 Washington 2 Smith 1 White 3 White 3 Thompson 4 Wilson 3 Wilson 3 Washington 2 Thompson 4 Brown 4 White 3 Brown 4 Jones 4 Wilson 3 Jones 4 Thompson 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 11 / 49

26 Sortowanie stabilne - algorytmy Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Sortowanie przez zliczanie (ang. counting sort) Sortowanie pozycyjne (ang. radix sort) - omówione w następnej części wykładu Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 12 / 49

27 Sortowanie niestabilne - algorytmy Sortowanie przez wybieranie(ang. selection sort)) Sortowanie szybkie (ang. quicksort) Sortowanie przez kopcowanie (ang. heapsort) - omówione na wykładach późniejszych Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 13 / 49

28 Sortowanie przez zliczanie -idea Zadanie: Posortujmy ciag: 3,6,3,2,7,1,7,1. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 14 / 49

29 Sortowanie przez zliczanie -idea Zadanie: Posortujmy ciag: 3,6,3,2,7,1,7,1. Po zliczeniu (w jednym korku) operujemy danymi na temat liczności poszczególnych liczb: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 14 / 49

30 Sortowanie przez zliczanie -idea Zadanie: Posortujmy ciag: 3,6,3,2,7,1,7,1. Po zliczeniu (w jednym korku) operujemy danymi na temat liczności poszczególnych liczb: Liczba 1 występuje 2 razy Liczba 2 występuje 1 raz Liczba 3 występuje 2 razy Liczba 4 występuje 0 razy Liczba 5 występuje 0 razy Liczba 6 występuje 1 raz Liczba 7 występuje 2 razy Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 14 / 49

31 Sortowanie przez zliczanie -idea Zadanie: Posortujmy ciag: 3,6,3,2,7,1,7,1. Po zliczeniu (w jednym korku) operujemy danymi na temat liczności poszczególnych liczb: Liczba 1 występuje 2 razy Liczba 2 występuje 1 raz Liczba 3 występuje 2 razy Liczba 4 występuje 0 razy Liczba 5 występuje 0 razy Liczba 6 występuje 1 raz Liczba 7 występuje 2 razy Na podstawie tych danych tworzymy posortowany ciag: 1,1,2,3,3,6,7,7. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 14 / 49

32 Sortowanie przez zliczanie - uwagi Proces zliczania odbywa się w jednym kroku Nie dochodzi do ani jednej zamiany elementów Proces tworzenia tablicy wynikowej odbywa się w jednym kroku Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 15 / 49

33 Sortowanie przez zliczanie - algorytm Wejście: A[1..n], gdzie A[j] {1, 2,..., k}. Wyjście: B[1..n], posortowana. Tablica Pomocnicza: C[1..k]. {A=[0,...,n-1]} Algorytm: Counting-sort(A,B,k) 1: for all i = 1 to k do 2: C[i] := 0; 3: end for 4: for all j = 1 to n do 5: C[A[j]] := C[A[j]]+1; 6: end for{//c[i] zawiera teraz liczbe elementów równych i} 7: for all i = 2 to k do 8: C[i] := C[i]+C[i 1]; 9: end for{//c[i] zawiera teraz liczbę elementów mniejszych badź równych i} 10: for all j = n downto 1 do 11: B[C[A[j]]] := A[j]; 12: C[A[j]] := C[A[j]] 1; 13: end for Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 16 / 49

34 Sortowanie przez zliczanie -przykład Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 17 / 49

35 Sortowanie przez zliczanie - pętla nr. 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 18 / 49

36 Sortowanie przez zliczanie - pętla nr. 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 19 / 49

37 Sortowanie przez zliczanie - pętla nr. 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 20 / 49

38 Sortowanie przez zliczanie - pętla nr. 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 21 / 49

39 Sortowanie przez zliczanie - pętla nr. 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 22 / 49

40 Sortowanie przez zliczanie - pętla nr. 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 23 / 49

41 Sortowanie przez zliczanie - pętla nr. 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 24 / 49

42 Sortowanie przez zliczanie - pętla nr. 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 25 / 49

43 Sortowanie przez zliczanie - pętla nr. 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 26 / 49

44 Sortowanie przez zliczanie - pętla nr. 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 27 / 49

45 Sortowanie przez zliczanie - pętla nr. 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 28 / 49

46 Sortowanie przez zliczanie - pętla nr. 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 29 / 49

47 Sortowanie przez zliczanie - pętla nr. 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 30 / 49

48 Sortowanie przez zliczanie - pętla nr. 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 31 / 49

49 Sortowanie przez zliczanie - Złożoność obliczeniowa Algorytm: Counting-sort(A,B,k) 1: for all i = 1 to k do 2: C[i] := 0; 3: end for{θ(k)} 4: for all j = 1 to n do 5: C[A[j]] := C[A[j]]+1; 6: end for{θ(n)} 7: for all i = 2 to k do 8: C[i] := C[i]+C[i 1]; 9: end for{θ(k)} 10: for all j = n downto 1 do 11: B[C[A[j]]] := A[j]; 12: C[A[j]] := C[A[j]] 1; 13: end for{θ(n)} Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 32 / 49

50 Sortowanie przez zliczanie - Złożoność obliczeniowa Algorytm: Counting-sort(A,B,k) 1: for all i = 1 to k do 2: C[i] := 0; 3: end for{θ(k)} 4: for all j = 1 to n do 5: C[A[j]] := C[A[j]]+1; 6: end for{θ(n)} 7: for all i = 2 to k do 8: C[i] := C[i]+C[i 1]; 9: end for{θ(k)} 10: for all j = n downto 1 do 11: B[C[A[j]]] := A[j]; 12: C[A[j]] := C[A[j]] 1; 13: end for{θ(n)} Złożoność obliczeniowa Counting-sort = Θ(n+k) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 32 / 49

51 Sortowanie przez zliczanie - Złożoność obliczeniowa Można sortować tylko wartości całkowite. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 33 / 49

52 Sortowanie przez zliczanie - Złożoność obliczeniowa Można sortować tylko wartości całkowite. Efektywnośc sortowania silnie zależy od zakresu k. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 33 / 49

53 Sortowanie przez zliczanie - Złożoność obliczeniowa Można sortować tylko wartości całkowite. Efektywnośc sortowania silnie zależy od zakresu k. Jeżeli k jest małe, np. k = O(n), to czas sortowania jest bardzo dobry, tzn. Θ(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 33 / 49

54 Sortowanie przez zliczanie - Złożoność obliczeniowa Można sortować tylko wartości całkowite. Efektywnośc sortowania silnie zależy od zakresu k. Jeżeli k jest małe, np. k = O(n), to czas sortowania jest bardzo dobry, tzn. Θ(n). Przykładowo, dla danych kodowalnych na 1 bajcie, k = 2 8 = pomocnicza tablica ma zatem rozmiar 256. Wówczas counting-sort działa naprawdę szybko, tj. w czasie (256+n) = Θ(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 33 / 49

55 Sortowanie przez zliczanie - Złożoność obliczeniowa Można sortować tylko wartości całkowite. Efektywnośc sortowania silnie zależy od zakresu k. Jeżeli k jest małe, np. k = O(n), to czas sortowania jest bardzo dobry, tzn. Θ(n). Przykładowo, dla danych kodowalnych na 1 bajcie, k = 2 8 = pomocnicza tablica ma zatem rozmiar 256. Wówczas counting-sort działa naprawdę szybko, tj. w czasie (256+n) = Θ(n). Jeżeli k jest duże, to algorym już nie jest taki dobry!!!. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 33 / 49

56 Sortowanie przez zliczanie - Złożoność obliczeniowa Można sortować tylko wartości całkowite. Efektywnośc sortowania silnie zależy od zakresu k. Jeżeli k jest małe, np. k = O(n), to czas sortowania jest bardzo dobry, tzn. Θ(n). Przykładowo, dla danych kodowalnych na 1 bajcie, k = 2 8 = pomocnicza tablica ma zatem rozmiar 256. Wówczas counting-sort działa naprawdę szybko, tj. w czasie (256+n) = Θ(n). Jeżeli k jest duże, to algorym już nie jest taki dobry!!!. Przykładowo, dla danych kodowalnych na 4 bajtach, k = 2 32, czyli okolo 4.2 biliona. Zatem k jest całkiem duże. Wymagana pomocnicza tablica ma rozmiar 4.2 biliona, czyli zajmie około 16 giga-bajtów. Czyli na samym starcie już nie jest dobrze... potrzebny jest super komputer z conajmniej 16 gigabajtami RAM-u. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 33 / 49

57 Sortowanie przez zliczanie jest stabilne Sortowanie przez zliczanie jest stabilne: zachowuje wejściowy porzadek wśród równych elementów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 34 / 49

58 Herman Hollerith ( ) Wynalazca kart perforowanych. Ustalił standardowy format karty perforowanej o rozmiarze banknotu jednodolarowego. W 1890 zbudował pierwszy tabulator -sorter kart dziurkowanych - urzadzenie oparte na idei Jacquarda, służace do mechanicznego sporzadzania zestawień danych, ich klasyfikowania, przetwarzania i powielania. Pozwoliło ono przeprowadzić w USA (wtedy 60 milionów ludzi) spis powszechny w dwa i pół roku. Hollerith w 1911 założył firmę Tabulating Machine Company, z której w 1924 wyłoniła się firma IBM (International Business Machines). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 35 / 49

59 Karta dziurkowana Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 36 / 49

60 Herman Hollerith ( ) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 37 / 49

61 Geneza sortowania pozycyjnego Oto cytat z roku 1889 opisujacy patent (maszynę tabulacyjna) Hollerith a The most complicated combinations can readily be counted with comparatively few counters or relays by first assorting the cards according to the first items entering into the combinations, then reassorting each group according to the second item entering into the combination, and so on, and finally counting on a few counters the last item of the combination for each group of cards. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 38 / 49

62 Sortowanie pozycyjne Pochodzenie: sorter kart dziurkowanych Herman Hollerith a. Sortowanie cyfra po cyfrze. Niepoprawna idea Hollerith a: sortowanie wzgledem najbardziej znaczacej cyfry. Właściwa idea: sortowanie stabilne przy użyciu pomocniczego algorytmy sortujacego wzgledem najmniej znaczacej cyfry. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 39 / 49

63 Sortowanie pozycyjne Pochodzenie: sorter kart dziurkowanych Herman Hollerith a. Sortowanie cyfra po cyfrze. Niepoprawna idea Hollerith a: sortowanie wzgledem najbardziej znaczacej cyfry. Właściwa idea: sortowanie stabilne przy użyciu pomocniczego algorytmy sortujacego wzgledem najmniej znaczacej cyfry. Idea Sortowanie pozycyjne (ang. radix sort) porzadkuje stabilnie ciagi wartości (liczb, słów) względem konkretnych cyfr, znaków itp., kolejno od najmniej znaczacych do najbardziej znaczacych pozycji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 39 / 49

64 Sortowanie pozycyjne - algorytm Require: Zbiór n-elementowych ciagów A Algorytm: RadixSort 1: for all i = n downto 1 do 2: sortuj stabilnie ciagi według i-tej pozycji; 3: end for Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 40 / 49

65 Sortowanie pozycyjne - przykład Wejście: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 41 / 49

66 Sortowanie pozycyjne - przykład Wejście: I przebieg: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 41 / 49

67 Sortowanie pozycyjne - przykład Wejście: I przebieg: II przebieg: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 41 / 49

68 Sortowanie pozycyjne - przykład Wejście: I przebieg: II przebieg: III przebieg: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 41 / 49

69 Sortowanie pozycyjne - przykład Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 42 / 49

70 Sortowanie Pozycyjne -poprawność Indukcja ze względu na pozycje cyfry Załóżmy, że liczby sa posortowane niemalejaco względem t 1 cyfry. Sortujemy według cyfry t Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 43 / 49

71 Sortowanie Pozycyjne -poprawność Sortujemy według cyfry t Liczby różnia się na t-tej cyfrze: Ponieważ sortujemy względem najbardziej znaczacej cyfry (w tym przypadku jest to t ta cyfra), to wybrana przez nas metoda sortowania (dowolna stabilna) ustawi liczby o długości t we właściwym porzadku. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 44 / 49

72 Sortowanie Pozycyjne -poprawność Sortujemy według cyfry t Liczby sa równe na t-tej cyfrze: Ponieważ z założenia wykonujemy sortowanie stabilne na cyfrach, dwie liczby równe na t-tej cyfrze pozostaja w tym samym porzadku. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 45 / 49

73 Sortowanie pozycyjne - analiza Złożoność algorymu zależy od wybranego pomocniczego stabilnego algorytmu sortujacego. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 46 / 49

74 Sortowanie pozycyjne - analiza Złożoność algorymu zależy od wybranego pomocniczego stabilnego algorytmu sortujacego. Zatem nie powinniśmy wybrać żadnego z poniższych, jeśli zależy nam na sortowaniu w czasie liniowym: Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 46 / 49

75 Sortowanie pozycyjne - analiza Złożoność algorymu zależy od wybranego pomocniczego stabilnego algorytmu sortujacego. Zatem nie powinniśmy wybrać żadnego z poniższych, jeśli zależy nam na sortowaniu w czasie liniowym: Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Właściwy wybór to: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 46 / 49

76 Sortowanie pozycyjne - analiza Złożoność algorymu zależy od wybranego pomocniczego stabilnego algorytmu sortujacego. Zatem nie powinniśmy wybrać żadnego z poniższych, jeśli zależy nam na sortowaniu w czasie liniowym: Sortowanie babelkowe (ang. bubblesort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie przez scalanie (ang. merge sort) Właściwy wybór to: sortowanie przez zliczanie Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 46 / 49

77 Sortowanie pozycyjne - analiza Załóżmy, że wybranym sortowaniem pomocniczym jest sortowanie przez zliczanie. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 47 / 49

78 Sortowanie pozycyjne - analiza Załóżmy, że wybranym sortowaniem pomocniczym jest sortowanie przez zliczanie. Wiemy, że sortowanie przez zliczanie pracuje w czasie Θ(n + k), aby posortować n liczb z zakresu od 0 do k 1. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 47 / 49

79 Sortowanie pozycyjne - analiza Załóżmy, że wybranym sortowaniem pomocniczym jest sortowanie przez zliczanie. Wiemy, że sortowanie przez zliczanie pracuje w czasie Θ(n + k), aby posortować n liczb z zakresu od 0 do k 1. Zatem, jeśli b-bitowe słowo (b-bitowa liczba) zostanie podzielone na r-bitowe kawałki, to każdy przebieg sortowania przez zlicznie będzie wykonany w czsie Θ(n+2 r ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 47 / 49

80 Sortowanie pozycyjne - analiza Załóżmy, że wybranym sortowaniem pomocniczym jest sortowanie przez zliczanie. Wiemy, że sortowanie przez zliczanie pracuje w czasie Θ(n + k), aby posortować n liczb z zakresu od 0 do k 1. Zatem, jeśli b-bitowe słowo (b-bitowa liczba) zostanie podzielone na r-bitowe kawałki, to każdy przebieg sortowania przez zlicznie będzie wykonany w czsie Θ(n+2 r ). Ponieważ w sortowaniu pozycyjnym będziemy mieli b/r przebiegów, to czas wykonania sortowania będzie: T(n, b) = Θ( b r (n+2r )) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 47 / 49

81 Wybór r T(n, b) = Θ( b r (n+2r )) Aby algorym sortowania pozycyjnego pracował szybko (tzn. w czasie liniowym ), należy odpowiednio dobrze dobrać r. W szczególności duże r oznacza, że będzie tylko kilka przebiegów. Należy jednka zwrócić uwagę, aby r nie było zbyć duże, gdyż jeśli r > log 2 (n), to czas sorowania pomocniczego (przez zliczanie) i potrzebna mu pamięć będzie zbyt duża!!! Aby zminimalizować T(n, b), należy wybrać r = log 2 (n), co implikuje T(n, b) = Θ(b n/log 2 (n))). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 48 / 49

82 Wybór r T(n, b) = Θ( b r (n+2r )) Aby algorym sortowania pozycyjnego pracował szybko (tzn. w czasie liniowym ), należy odpowiednio dobrze dobrać r. W szczególności duże r oznacza, że będzie tylko kilka przebiegów. Należy jednka zwrócić uwagę, aby r nie było zbyć duże, gdyż jeśli r > log 2 (n), to czas sorowania pomocniczego (przez zliczanie) i potrzebna mu pamięć będzie zbyt duża!!! Aby zminimalizować T(n, b), należy wybrać r = log 2 (n), co implikuje T(n, b) = Θ(b n/log 2 (n))). Powyższe r można uzyskać poprzez zróżniczkowanie fukcji T(n, b) względem zmiennej r i podstawieniu pod powstała funkcję wartości 0. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 48 / 49

83 Uwagi końcowe W praktyce sortowanie pozycyjne jest bardzo dobre dla dużych danych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 49 / 49

84 Uwagi końcowe W praktyce sortowanie pozycyjne jest bardzo dobre dla dużych danych. Przykładowo dla liczb 32-bitowych przy sortowaniu 2000 danych sortowanie pozycyjne wykona (b n/log 2 (n))) = /log 2 (2000) operacji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 49 / 49

85 Uwagi końcowe W praktyce sortowanie pozycyjne jest bardzo dobre dla dużych danych. Przykładowo dla liczb 32-bitowych przy sortowaniu 2000 danych sortowanie pozycyjne wykona (b n/log 2 (n))) = /log 2 (2000) operacji. Dla porównania, sortowanie szybkie wykona n log 2 (n) = 2000 log 2 (2000) operacji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 49 / 49

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

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

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

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

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59 Cel wykładów z programowania

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 Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

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

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

Podstawy Informatyki

Podstawy Informatyki Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 7 i 8 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 7 i 8 1 / 44 Struktura danych - tablica

Bardziej szczegółowo

Sortowanie przez scalanie

Sortowanie przez scalanie Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

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

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

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

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. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 20

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

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

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

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

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

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

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

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

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

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

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

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Egzamin, AISDI, I termin, 18 czerwca 2015 r. Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział

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

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

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

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

Bardziej szczegółowo

Wykład 4. Sortowanie

Wykład 4. Sortowanie Wykład 4 Sortowanie 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 dla algorytmiki

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

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

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS Czas sortowania w milisekundach Czas sortowania w milisekundach Sortowanie Porównanie, Counting Sort, Shell Sort, Bubble Sort 4 Porównanie sortowao: HS, CS, Shs, BS 35 3 25 2 15 5 Counting Sort Shell Sort

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

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

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

Podstawy programowania. Przykłady algorytmów Cz. 2 Sortowanie

Podstawy programowania. Przykłady algorytmów Cz. 2 Sortowanie Podstawy programowania Przykłady algorytmów Cz. 2 Sortowanie Złożoność obliczeniowa Złożoność obliczeniowa to ilość zasobów niezbędna do wykonania algorytmu. Wyróżnia się dwa rodzaje: Złożoność czasową

Bardziej szczegółowo

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące

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

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

Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:

Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów: Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów: Listy rozkładane są do różnych przegródek. O tym, do której z nich trafi koperta, decydują różne fragmenty

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 sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe Algorytmy sortujące sortowanie kubełkowe, sortowanie grzebieniowe Sortowanie kubełkowe (bucket sort) Jest to jeden z najbardziej popularnych algorytmów sortowania. Został wynaleziony w 1956 r. przez E.J.

Bardziej szczegółowo

Sortowanie. Bartman Jacek Algorytmy i struktury

Sortowanie. Bartman Jacek Algorytmy i struktury Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39

Bardziej szczegółowo

Laboratorium nr 7 Sortowanie

Laboratorium nr 7 Sortowanie Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę

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

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 Sortowanie bąbelkowe Sortowanie przez wstawianie Sortowanie przez selekcję Sortowanie

Bardziej szczegółowo

Podstawy Informatyki dla Nauczyciela

Podstawy Informatyki dla Nauczyciela Podstawy Informatyki dla Nauczyciela Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 2 1 / 1 Informacja

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

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

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Podstawowe informacje Prowadzący: Jan Tuziemski Email: jan.tuziemski@pg.edu.pl Konsultacje: pokój 412 GB (do ustalenia 412 GB) Podstawowe informacje literatura K. Goczyła Struktury

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

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

Źródła. N.Wirth Algorithms and Data Structures, 1985 D.E.Knuth The Art of Computer Programming. Vol. 3, 1973

Źródła. N.Wirth Algorithms and Data Structures, 1985 D.E.Knuth The Art of Computer Programming. Vol. 3, 1973 Źródła N.Wirth Algorithms and Data Structures, 1985 D.E.Knuth The Art of Computer Programming. Vol. 3, 1973 Sortowanie Szukamy uporządkowania; mamy wiele algorytmów o różnych zaletach i różnych stopniach

Bardziej szczegółowo

Złożoność algorytmów. Wstęp do Informatyki

Złożoność algorytmów. Wstęp do Informatyki Złożoność algorytmów Złożoność pamięciowa - liczba i rozmiar struktur danych wykorzystywanych w algorytmie Złożoność czasowa - liczba operacji elementarnych wykonywanych w trakcie przebiegu algorytmu Złożoność

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

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

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

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

zajęcia 3. Marcin Andrychowicz, Tomasz Kulczyński,

zajęcia 3. Marcin Andrychowicz, Tomasz Kulczyński, zajęcia 3. Marcin Andrychowicz, Tomasz Kulczyński, Błażej Osiński Dane Metoda pozwalajaca sortować w czasie liniowym Ciag liczb z zakresu O, 1,..., M 5, 1, 4, 5, 1, 0, 4, 5, 1, 3, 5 Zliczamy wystapienia

Bardziej szczegółowo

Przykładowe sprawozdanie. Jan Pustelnik

Przykładowe sprawozdanie. Jan Pustelnik Przykładowe sprawozdanie Jan Pustelnik 30 marca 2007 Rozdział 1 Sformułowanie problemu Tematem pracy jest porównanie wydajności trzech tradycyjnych metod sortowania: InsertionSort, SelectionSort i BubbleSort.

Bardziej szczegółowo

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Złożoność obliczeniowa, efektywność i algorytmy sortowania www.agh.edu.pl

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych - Lista 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 i Struktury Danych.

Bardziej szczegółowo

Algorytmy i struktury danych Matematyka III sem.

Algorytmy i struktury danych Matematyka III sem. Algorytmy i struktury danych Matematyka III sem. 30 godz. wykł. / 15 godz. ćw. / 15 godz. projekt dr inŝ. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura T.H. Cormen i inni, Wprowadzenie

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

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH ALGORYTMY I STRUKTURY DANYCH Temat : Drzewa zrównoważone, sortowanie drzewiaste Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/

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

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Treści programowe. Złożoność obliczeniowa algorytmu na przykładach. dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 4 1 / 1 DZIELENIE LICZB BINARNYCH Dzielenie

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych

Bardziej szczegółowo

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak: Sortowanie stogowe Drzewo binarne Binary Tree Dotychczas operowaliśmy na prostych strukturach danych, takich jak tablice. W tablicy elementy ułożone są zgodnie z ich numeracją, czyli indeksami. Jeśli za

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

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

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

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

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

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.) Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : 15 1 grudnia 005.) 1. Program w C 1 zawiera deklaracje 1 void P1 ( int a, int b) { int i ; 3 for ( i =0;i

Bardziej szczegółowo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność

Bardziej szczegółowo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

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

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy

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

[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 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

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

Temat: Algorytm kompresji plików metodą Huffmana

Temat: Algorytm kompresji plików metodą Huffmana Temat: Algorytm kompresji plików metodą Huffmana. Wymagania dotyczące kompresji danych Przez M oznaczmy zbiór wszystkich możliwych symboli występujących w pliku (alfabet pliku). Przykład M = 2, gdy plik

Bardziej szczegółowo

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2013/14 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie

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

PODSTAWY INFORMATYKI wykład 6.

PODSTAWY INFORMATYKI wykład 6. PODSTAWY INFORMATYKI wykład 6. 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

Dynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania

Dynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania Rok akademicki 2010/2011, Wykład nr 4 2/50 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2010/2011

Bardziej szczegółowo

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW MASZYNY O DOSTEPIE SWOBODNYM (RAM) Bartosz Zieliński Katedra Fizyki Teoretycznej i Informatyki Zima 2011-2012 INSTRUKCJE MASZYNY RAM Instrukcja Argument Znaczenie READ

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 8 1 /

Bardziej szczegółowo

2:8,7 3:9,4 / \ / \ / \ / \ 4:7,3 5:8 6:9,2 7:4

2:8,7 3:9,4 / \ / \ / \ / \ 4:7,3 5:8 6:9,2 7:4 Wykład: Sortowanie III Drzewa Turniejowe 1:9,8 2:8,7 3:9,4 4:7,3 5:8 6:9,2 7:4 8: 3 9:7 12:9 13:2 Insert(x,S) 1) tworzymy dwa nowe liście na ostatnim poziomie, 2) do jednego wstawiamy x a do drugiego wartość

Bardziej szczegółowo

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa Łukasz Przywarty 171018 Data utworzenia: 24.03.2010r. Mariusz Kacała 171058 Prowadzący: prof. dr hab. inż. Adam Janiak oraz dr inż. Tomiasz Krysiak Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne

Bardziej szczegółowo

PODSTAWY INFORMATYKI wykład 10.

PODSTAWY INFORMATYKI wykład 10. PODSTAWY INFORMATYKI wykład 10. 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-Hutniacza w Krakowie WEAIiE,

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