Algorytmy i Struktury Danych.

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

Download "Algorytmy i Struktury Danych."

Transkrypt

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

2 Na całym cyklu wykładów z Algorytmów i Struktur Danych wykorzystano materiały dostępne z następujacych witryn: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 2 / 35

3 Literatura podstawowa Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, Warszawa, Dasgupta S., Papadimitriou Ch., Vasirani U. Algorytmy. Wydawnictwo Naukowe PWN, Seria Fundamenta Informatyki, Warszawa Banachowski L., Diks K., Rytter W. Algorytmy i struktury danych. WNT, Warszawa, Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 3 / 35

4 Literatura uzupełniajaca Drozdek A. C++. Algorytmy i struktury danych. Wydawnictwo Helion. Gliwice, Sedgewick R. Algorytmy w C++. Wydawnictwo RM. Warszawa, Sedgewick R. Algorytmy w C++. Grafy. Wydawnictwo RM. Warszawa, Piotr Wróblewski. Algorytmy, struktury danych i techniki programowania. Wydanie III. Wydawnictwo Helion. Gliwice, Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 4 / 35

5 Cel wykładów z algortmów i struktur danych Wykład jest poświęcony przede wszystkim metodom efektywnego rozwiazywania problemów na komputerze. Jego celem jest zapoznanie z: podstawami analizy algorytmów dobór właściwego algorytmu i struktury danych jest podstawa sukcesu przy rozwiazywaniu zadanego problemu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 5 / 35

6 Cel wykładów z algortmów i struktur danych Wykład jest poświęcony przede wszystkim metodom efektywnego rozwiazywania problemów na komputerze. Jego celem jest zapoznanie z: podstawami analizy algorytmów dobór właściwego algorytmu i struktury danych jest podstawa sukcesu przy rozwiazywaniu zadanego problemu. technikami projektowania algorytmów: dziel i rzadź, programowanie dynamiczne, algorytmy zachłanne, przeszukiwanie z nawrotami, heurystyki. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 5 / 35

7 Cel wykładów z algortmów i struktur danych Wykład jest poświęcony przede wszystkim metodom efektywnego rozwiazywania problemów na komputerze. Jego celem jest zapoznanie z: podstawami analizy algorytmów dobór właściwego algorytmu i struktury danych jest podstawa sukcesu przy rozwiazywaniu zadanego problemu. technikami projektowania algorytmów: dziel i rzadź, programowanie dynamiczne, algorytmy zachłanne, przeszukiwanie z nawrotami, heurystyki. zestawem algorytmów realizujacych zadania typu wyszukiwanie, sortowanie. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 5 / 35

8 Cel wykładów z algortmów i struktur danych Wykład jest poświęcony przede wszystkim metodom efektywnego rozwiazywania problemów na komputerze. Jego celem jest zapoznanie z: podstawami analizy algorytmów dobór właściwego algorytmu i struktury danych jest podstawa sukcesu przy rozwiazywaniu zadanego problemu. technikami projektowania algorytmów: dziel i rzadź, programowanie dynamiczne, algorytmy zachłanne, przeszukiwanie z nawrotami, heurystyki. zestawem algorytmów realizujacych zadania typu wyszukiwanie, sortowanie. z abstrakcyjnymi strukturami danych i ich implementacjami: stosy, kolejki, listy, drzewa, drzewa poszukiwań binarnych, grafy, kolejki priorytetowe. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 5 / 35

9 Cel wykładów z algortmów i struktur danych Wykład jest poświęcony przede wszystkim metodom efektywnego rozwiazywania problemów na komputerze. Jego celem jest zapoznanie z: podstawami analizy algorytmów dobór właściwego algorytmu i struktury danych jest podstawa sukcesu przy rozwiazywaniu zadanego problemu. technikami projektowania algorytmów: dziel i rzadź, programowanie dynamiczne, algorytmy zachłanne, przeszukiwanie z nawrotami, heurystyki. zestawem algorytmów realizujacych zadania typu wyszukiwanie, sortowanie. z abstrakcyjnymi strukturami danych i ich implementacjami: stosy, kolejki, listy, drzewa, drzewa poszukiwań binarnych, grafy, kolejki priorytetowe. podstawowymi algorytmami grafowymi. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 5 / 35

10 Cel wykładów z algortmów i struktur danych Wykład jest poświęcony przede wszystkim metodom efektywnego rozwiazywania problemów na komputerze. Jego celem jest zapoznanie z: podstawami analizy algorytmów dobór właściwego algorytmu i struktury danych jest podstawa sukcesu przy rozwiazywaniu zadanego problemu. technikami projektowania algorytmów: dziel i rzadź, programowanie dynamiczne, algorytmy zachłanne, przeszukiwanie z nawrotami, heurystyki. zestawem algorytmów realizujacych zadania typu wyszukiwanie, sortowanie. z abstrakcyjnymi strukturami danych i ich implementacjami: stosy, kolejki, listy, drzewa, drzewa poszukiwań binarnych, grafy, kolejki priorytetowe. podstawowymi algorytmami grafowymi. problemami obliczeniowo trudnymi: NP-zupełność, nierozstrzygalność. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 5 / 35

11 Dlaczego warto poznać algorytmy i ich złożoność obliczeniowa? Algorytmy pozwalaja na pisanie dobrych programów, tzn. programów, które działaja poprawnie i wydajne, sa funkcjonalne, zużywaja tylko konieczna liczbę zasobów, itp. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 6 / 35

12 Dlaczego warto poznać algorytmy i ich złożoność obliczeniowa? Algorytmy pozwalaja na pisanie dobrych programów, tzn. programów, które działaja poprawnie i wydajne, sa funkcjonalne, zużywaja tylko konieczna liczbę zasobów, itp. Algorytmy pozwalaja w sposób formalny mówić o zachowaniu programów implementowanych w różnych językach programowania. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 6 / 35

13 Dlaczego warto poznać algorytmy i ich złożoność obliczeniowa? Algorytmy pozwalaja na pisanie dobrych programów, tzn. programów, które działaja poprawnie i wydajne, sa funkcjonalne, zużywaja tylko konieczna liczbę zasobów, itp. Algorytmy pozwalaja w sposób formalny mówić o zachowaniu programów implementowanych w różnych językach programowania. Najważniejszymi aspektami algorytmu sa jego poprawność i złożoność obliczeniowa. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 6 / 35

14 Dlaczego warto poznać algorytmy i ich złożoność obliczeniowa? Algorytmy pozwalaja na pisanie dobrych programów, tzn. programów, które działaja poprawnie i wydajne, sa funkcjonalne, zużywaja tylko konieczna liczbę zasobów, itp. Algorytmy pozwalaja w sposób formalny mówić o zachowaniu programów implementowanych w różnych językach programowania. Najważniejszymi aspektami algorytmu sa jego poprawność i złożoność obliczeniowa. Złożoność obliczeniowa algorytmu wyznacza granice pomiędzy tym co jest możliwe do wykonania/ zaimplementowania/ zastosowania w rzeczywistości, a co nie. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 6 / 35

15 Dlaczego warto poznać algorytmy i ich złożoność obliczeniowa? Algorytmy pozwalaja na pisanie dobrych programów, tzn. programów, które działaja poprawnie i wydajne, sa funkcjonalne, zużywaja tylko konieczna liczbę zasobów, itp. Algorytmy pozwalaja w sposób formalny mówić o zachowaniu programów implementowanych w różnych językach programowania. Najważniejszymi aspektami algorytmu sa jego poprawność i złożoność obliczeniowa. Złożoność obliczeniowa algorytmu wyznacza granice pomiędzy tym co jest możliwe do wykonania/ zaimplementowania/ zastosowania w rzeczywistości, a co nie. Złożoność obliczeniowa algorytmu to koszt jego realizacji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 6 / 35

16 Złożoność algorytmu Definicja Złożoność algorytmu to ilość zasobów komputera niezbędnych do jego wykonania. W zależności od rozważanego zasobu złożoność dzielimy na złożoność czasową oraz złożoność pamięciowa. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 7 / 35

17 Złożoność algorytmu Definicja Złożoność algorytmu to ilość zasobów komputera niezbędnych do jego wykonania. W zależności od rozważanego zasobu złożoność dzielimy na złożoność czasową oraz złożoność pamięciowa. Złożoność czasowa to zależność pomiędzy rozmiarem danych wejściowych a liczba operacji elementarnych (operacji dominujacych) wykonywanych w trakcie przebiegu algorytmu. Operacjami dominujacymi moga być na przykład: podstawienie, porównanie lub prosta operacja arytmetyczna. Dzięki rozważaniu operacji dominujacych analiza złożoności będzie zależna jedynie od algorytmu, a nie od jego implementacji i sprzętu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 7 / 35

18 Złożoność algorytmu Złożoność pamięciowa to zależność pomiędzy rozmiarem danych wejściowych a ilośca wykorzystanej pamięci. Jako tę ilość najczęściej przyjmuje się użyta pamięć maszyny abstrakcyjnej (na przykład liczbę komórek pamięci maszyny RAM) w funkcji rozmiaru wejścia. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 8 / 35

19 Złożoność algorytmu Złożoność pamięciowa to zależność pomiędzy rozmiarem danych wejściowych a ilośca wykorzystanej pamięci. Jako tę ilość najczęściej przyjmuje się użyta pamięć maszyny abstrakcyjnej (na przykład liczbę komórek pamięci maszyny RAM) w funkcji rozmiaru wejścia. Im większe rozmiary danych wejściowych tym więcej zasobów (czasu, pamięci) jest koniecznych do wykonania danego algorytmu. Złożoność algorytmu jest zatem funkcja rozmiaru danych wejściowych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 8 / 35

20 Złożoność algorytmu Złożoność pamięciowa to zależność pomiędzy rozmiarem danych wejściowych a ilośca wykorzystanej pamięci. Jako tę ilość najczęściej przyjmuje się użyta pamięć maszyny abstrakcyjnej (na przykład liczbę komórek pamięci maszyny RAM) w funkcji rozmiaru wejścia. Im większe rozmiary danych wejściowych tym więcej zasobów (czasu, pamięci) jest koniecznych do wykonania danego algorytmu. Złożoność algorytmu jest zatem funkcja rozmiaru danych wejściowych. Złożoność algorytmu zależy nie tylko od rozmiaru ciagu wejściowego (krótke ciagi jest znacznie łatwiej posortować niż długie) ale również od rodzaju wejścia (prawie uporzadkowany ciag jest znacznie łatwiej posortować). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 8 / 35

21 Rodzaje złożoności W praktyce rozważa się dwa podejścia: rozpatrywanie przypadków najgorszych (złożoność pesymistyczna) oraz zastosowanie określonego sposobu uśrednienia wszystkich możliwych przypadków (złożoność oczekiwana). Złożoność pesymistyczna (ang. worst-case): T(n) = maksymalna ilość zasobu (pamięć, czas) potrzebna do wykonania algorytmu dla dowolnego wejścia o rozmiarze n. Złożoność oczekiwana (ang. average-case): T(n) = oczekiwana ilość zasobu (pamięć, czas) potrzebna do wykonania algorytmu dla dowolnego wejścia o rozmiarze n. Złożoność oczekiwana zależy istotnie od założenia o rozważanej przestrzeni probabilistycznej danych wejściowych. Przestrzeń probabilistyczna danych wejściowych może być bardzo skomplikowana, co powoduje, że wyznaczenie złożoności oczekiwanej wymaga bardzo trudnych analiz matematycznych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 9 / 35

22 Notacja asymptotyczna Do wyrażania złożoności stosowany jest opis asymptotycznego wzrostu funkcji: f(n) = O(g(n)) oznaczajacy, że f(n) c g(n) dla pewnej stałej c. Gdy g(n) = log(n), to mówimy, że f(n) jest logarytmiczna. Gdy g(n) = n, to mówimy, że f(n) jest liniowa. Gdy g(n) = n log(n), to mówimy, że f(n) jest liniowao-logarytmiczna. Gdy g(n) = n 2, to mówimy, że złożoność f(n) jest kwadratowa. Jeśli g(n) jest wielomianem, to mówimy o złożoności wielomianowej dla f(n). Jeśli g(n) jest wykładnicza, to mówimy o złożoności wykładniczej dla f(n). Jeśli g(n) jest silnie wykładnicza, to mówimy o złożoności silnie wykładniczej dla f(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 10 / 35

23 Notacja asymptotyczna Funkcja asymptotycznie niemniejsza od funkcji g(n) to taka funkcja f : N R, dla której istnieja c > 0 i n 0 N, że c g(n) f(n) dla wszystkich n n 0. Zbiór funkcji asymptotycznie niemniejszych niż g(n) oznaczamy przez Ω(g(n)). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 11 / 35

24 Notacja asymptotyczna Funkcja asymptotycznie niemniejsza od funkcji g(n) to taka funkcja f : N R, dla której istnieja c > 0 i n 0 N, że c g(n) f(n) dla wszystkich n n 0. Zbiór funkcji asymptotycznie niemniejszych niż g(n) oznaczamy przez Ω(g(n)). Funkcja asymptotycznie podobna do funkcji g(n) to taka funkcja f : N R, dla której istnieja c 0, c 1 > 0 i n 0 N, że c 0 g(n) f(n) c 1 g(n) dla wszystkich n n 0. Zbiór funkcji asymptotycznie podobnych do g(n) oznaczamy przez Θ(g(n)). A zatem Θ(g(n)) = O(g(n)) Ω(g(n)). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 11 / 35

25 Notacja asymptotyczna Funkcja asymptotycznie niemniejsza od funkcji g(n) to taka funkcja f : N R, dla której istnieja c > 0 i n 0 N, że c g(n) f(n) dla wszystkich n n 0. Zbiór funkcji asymptotycznie niemniejszych niż g(n) oznaczamy przez Ω(g(n)). Funkcja asymptotycznie podobna do funkcji g(n) to taka funkcja f : N R, dla której istnieja c 0, c 1 > 0 i n 0 N, że c 0 g(n) f(n) c 1 g(n) dla wszystkich n n 0. Zbiór funkcji asymptotycznie podobnych do g(n) oznaczamy przez Θ(g(n)). A zatem Θ(g(n)) = O(g(n)) Ω(g(n)). Przykłady: n2 2n = Θ(n 2 ) 3n n 2 5n+6046 = Θ(n 3 ) n n = Θ(2 n ) n! = Ω(10 n ) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 11 / 35

26 Problem Sortowania Definicja problemu Niech (U, ) będzie zbiorem liniowo uporzadkowanym z relacja porzadkuj ac a i niech (a 1, a 2,..., a n ) będzie ciagiem n elementów z U, dla pewnego całkowitego n > 0. Znaleźć permutację (a 1, a 2,..., a n ) taka, że (a 1 a 2 a n ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 12 / 35

27 Problem Sortowania Definicja problemu Niech (U, ) będzie zbiorem liniowo uporzadkowanym z relacja porzadkuj ac a i niech (a 1, a 2,..., a n ) będzie ciagiem n elementów z U, dla pewnego całkowitego n > 0. Znaleźć permutację (a 1, a 2,..., a n ) taka, że (a 1 a 2 a n ). Przykład Wejście: Wyjście: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 12 / 35

28 Problem Sortowania Definicja problemu Niech (U, ) będzie zbiorem liniowo uporzadkowanym z relacja porzadkuj ac a i niech (a 1, a 2,..., a n ) będzie ciagiem n elementów z U, dla pewnego całkowitego n > 0. Znaleźć permutację (a 1, a 2,..., a n ) taka, że (a 1 a 2 a n ). Przykład Wejście: Wyjście: Uwaga! Na U moga składać się zarówno liczby całkowite lub rzeczywiste, jak i U może być zbiorem rekordów, które należy posortować według ich kluczy. Jedynym sposobem ustalenie porzadku jest porównywanie elementów parami. Operacja porównania będzie operacja dominujac a w wszystkich naszych algorytmach sortujacych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 12 / 35

29 Popularne algorytmy sortowania Sortowanie przez porównywanie elementów: Sortowanie przez proste wybieranie (ang. selection sort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie babelkowe (ang. bubblesort) Sortowanie pozycyjne (ang. radix sort) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 13 / 35

30 Popularne algorytmy sortowania Sortowanie przez porównywanie elementów: Sortowanie przez proste wybieranie (ang. selection sort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie babelkowe (ang. bubblesort) Sortowanie pozycyjne (ang. radix sort) Sortowanie metoda dziel i zwyciężaj Sortowanie przez scalanie (ang. merge sort) sortowanie szybkie (ang. quicksort) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 13 / 35

31 Popularne algorytmy sortowania Sortowanie przez porównywanie elementów: Sortowanie przez proste wybieranie (ang. selection sort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie babelkowe (ang. bubblesort) Sortowanie pozycyjne (ang. radix sort) Sortowanie metoda dziel i zwyciężaj Sortowanie przez scalanie (ang. merge sort) sortowanie szybkie (ang. quicksort) Inne Sortowanie przez zliczanie (ang. counting sort) sortowanie przez kopcowanie (ang. heapsort) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 13 / 35

32 Sortowanie przez proste wybieranie Idea Sortowanie przez wybieranie polega na tym, że w każdym kroku znajdujemy najmniejszy element w sortowanym ciagu, po czym przenosimy ten element na odpowiednią pozycję do ciagu wynikowego (przez zamianę elementów miejscami). Sortowanie odbywa się w n-1 przebiegach. W i-tym przebiegu szukamy i-tego najmniejszego (największego) elementu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 14 / 35

33 Sortowanie przez proste wybieranie Require: tablica A o rozmiarze n {A=[0,...,n-1]} 1: for all i = 0 to n 2 do 2: min = i; 3: for all j = i + 1 to n 1 do 4: if A[j] < A[min] then 5: min = j; 6: end if 7: j = j + 1; 8: end for {zamiana elementu A[min] z elementem A[i] w tablicy A} 9: zamiana (A, min, i); 10: i = i + 1; 11: end for Ze względu na dwie zagnieżdżone pętle, z których każda wykonuje się dokładnie n razy, algorytm wymaga n n porównań, aby posortować n elementowy ciag, czyli jest w klasie O(n 2 ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 15 / 35

34 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

35 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 jest na właściwej pozycji Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

36 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 jest na właściwej pozycji 2 [0,1,6,8,4,3,2,9] 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

37 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 jest na właściwej pozycji 2 [0,1,6,8,4,3,2,9] 2 3 [0,1,2,8,4,3,6,9] 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

38 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 jest na właściwej pozycji 2 [0,1,6,8,4,3,2,9] 2 3 [0,1,2,8,4,3,6,9] 3 4 [0,1,2,3,4,8,6,9] 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

39 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 jest na właściwej pozycji 2 [0,1,6,8,4,3,2,9] 2 3 [0,1,2,8,4,3,6,9] 3 4 [0,1,2,3,4,8,6,9] 4 5 [0,1,2,3,4,8,6,9] 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

40 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 jest na właściwej pozycji 2 [0,1,6,8,4,3,2,9] 2 3 [0,1,2,8,4,3,6,9] 3 4 [0,1,2,3,4,8,6,9] 4 5 [0,1,2,3,4,8,6,9] 6 6 [0,1,2,3,4,6,8,9] 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

41 Sortowanie przez proste wybieranie - Przykład nr iteracji (wartość i ) Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 jest na właściwej pozycji 2 [0,1,6,8,4,3,2,9] 2 3 [0,1,2,8,4,3,6,9] 3 4 [0,1,2,3,4,8,6,9] 4 5 [0,1,2,3,4,8,6,9] 6 6 [0,1,2,3,4,6,8,9] 8 7 [0,1,2,3,4,6,8,9] 9 jest na właściwej pozycji Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 16 / 35

42 Sortowanie przez proste wybieranie - Przykład K r o k i a l g o r y t m u Klucze i = 2 i = 3 i = 4 i = 5 i = Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 17 / 35

43 Sortowanie przez proste wybieranie - Koszt algorytmu Złożoność pesymistyczna: Operacja dominujaca: porównywanie elementów. Wejście: ciag uporzadkowany w odwrotnej kolejności. Koszt: T(n) = n 1+n = n(n 1)/2 = O(n 2 ) Złożoność optymistyczna: Operacja dominujaca: porównywanie elementów. Wejście: wszystkie permutacje ciagu wejściowego równie prawdopodobne. Koszt: O(n 2 ). Złożoność pamięciowa: O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 18 / 35

44 Sortowanie przez proste wybieranie - implementacja w C/C++ void swap ( i n t data [ ], i n t i, i n t j ) { i n t temp = data [ i ] ; data [ i ] = data [ j ] ; data [ j ] = temp ; } i n t max( i n t [ ] a, i n t n ) { i n t currentmax = 0; for ( i n t i = 1; i <= n ; i ++) i f ( a [ currentmax ] < a [ i ] ) currentmax = i ; return currentmax ; } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 19 / 35

45 Sortowanie przez proste wybieranie - implementacja w C/C++ void s e l e c t i o n S o r t ( i n t [ ] a, i n t s ize ) { for ( i n t n = s ize ; n > 1; n ) { i n t j = max ( a, n 1); swap ( a, j, n 1 ) ; } } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 20 / 35

46 Sortowanie przez proste wybieranie - implementacja w C/C++ void s e l e c t i o n S o r t ( i n t a [ ], i n t s ize ) { i n t i, j, min, temp ; for ( i = 0; i < size 1; i ++) { min = i ; for ( j = i +1; j < s ize ; j ++) { i f ( a [ j ] < a [ min ] ) min = j ; } temp = a [ i ] ; a [ i ] = a [ min ] ; a [ min ] = temp ; } } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 21 / 35

47 Sortowanie przez wstawianie Idea Sortowanie przez wstawianie odbywa się w n 1 przebiegach. W i-tym przebiegu elementy na pozycjach 1,...,(i 1) sa już uporzadkowane, a wstawiany i-ty element przepycha się do przodu na właściwe miejsce, tak by stworzył wraz z innymi ciag uporzadkowany długości i. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 22 / 35

48 Sortowanie przez wstawianie - przykład Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 23 / 35

49 Sortowanie przez wstawianie Require: tablica A o rozmiarze n {A=[0,...,n-1]} 1: for i = 1 to n 1 do 2: key = A[i]; 3: j = i 1; 4: while j 0 and A[j] > key do 5: A[j + 1] = A[j]; 6: j = j 1; 7: end while 8: A[j + 1] = key; 9: end for Ze względu na dwie zagnieżdżone pętle, z których każda wykonuje się dokładnie n razy, algorytm wymaga n n porównań, aby posortować n elementowy ciag, czyli jest w klasie O(n 2 ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 24 / 35

50 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

51 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

52 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

53 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

54 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

55 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

56 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

57 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 5 [1,4,6,8,3,9,2,0] 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

58 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 5 [1,4,6,8,3,9,2,0] 3 [1,4,6,3,8,9,2,0] 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

59 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 5 [1,4,6,8,3,9,2,0] 3 [1,4,6,3,8,9,2,0] 3 [1,4,3,6,8,9,2,0] 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

60 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 5 [1,4,6,8,3,9,2,0] 3 [1,4,6,3,8,9,2,0] 3 [1,4,3,6,8,9,2,0] 3 [1,3,4,6,8,9,2,0] 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

61 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 5 [1,4,6,8,3,9,2,0] 3 [1,4,6,3,8,9,2,0] 3 [1,4,3,6,8,9,2,0] 3 [1,3,4,6,8,9,2,0] 3 6 [1,2,3,4,6,8,9,0] 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

62 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 5 [1,4,6,8,3,9,2,0] 3 [1,4,6,3,8,9,2,0] 3 [1,4,3,6,8,9,2,0] 3 [1,3,4,6,8,9,2,0] 3 6 [1,2,3,4,6,8,9,0] 2 7 [1,2,3,4,6,8,9,0] 0 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 25 / 35

63 Sortowanie przez wstawianie - przykład K r o k i a l g o r y t m u Klucze i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 26 / 35

64 Sortowanie przez wstawianie - Koszt algorytmu Złożoność pesymistyczna: Operacja dominujaca: porównywanie elementów. Wejście: ciag uporzadkowany w odwrotnej kolejności. Koszt: T(n) = n 1 = n(n 1)/2 = O(n 2 ) Złożoność optymistyczna: Operacja dominujaca: porównywanie elementów. Wejście: wszystkie permutacje ciagu wejściowego równie prawdopodobne. Koszt: O(n 2 ). Złożoność pamięciowa: O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 27 / 35

65 Sortowanie przez wstawianie - implementacja w C/C++ void i n s e r t ( i n t [ ] a, i n t n, i n t x ) { / / i n s e r t x i n t o a [ 0.. i 1] i n t j ; for ( j = i 1; j >= 0 && x < a [ j ] ; j ) a [ j + 1] = a [ j ] ; a [ j + 1] = x ; } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 28 / 35

66 Sortowanie przez wstawianie - implementacja w C/C++ void i n s e r t S o r t ( i n t [ ] a, i n t n ) { for ( i n t i = 1; i < n ; i ++) { / / i n s e r t a [ i ] i n t o a [ 0 : i 1] i n s e r t ( a, i, a [ i ] ) ; } } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 29 / 35

67 Sortowanie babelkowe W sortowaniu babelkowym liczby zachowuja się jak babelki, po kolei, jedna po drugiej ida do góry (lub w prawo). Sortowanie babelkowe jest wykonywane w n 1 fazach. W fazie i-tej wyznaczany jest i-ty najmniejszy/największy element. Idea Sprawdzamy cały ciag od końca. Jeżeli trafimy na parę elementów, w której większy poprzedza mniejszy, to zamieniamy je miejscami. Czynność powtarzamy tak długo, aż podczas sprawdzania całego ciagu, nie zajdzie ani jedna zamiana elementów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 30 / 35

68 Sortowanie babelkowe Require: tablica A o rozmiarze n {A=[0,...,n-1]} 1: for i = 0 to n 1 do 2: for j = n downto i + 1 do 3: if A[j 1] > A[j] then 4: Zamiana(A, j 1, j); 5: end if 6: end for 7: end for Ze względu na dwie zagnieżdżone pętle, z których każda wykonuje się dokładnie n razy, algorytm wymaga n n porównań, aby posortować n elementowy ciag, czyli jest w klasie O(n 2 ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 31 / 35

69 Sortowanie babelkowe - przykład 44 Klucze i = i = 2 K r o k i a l g o r y t m u i = i = i = i = i = Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 32 / 35

70 Sortowanie przez wstawianie - Koszt algorytmu Złożoność pesymistyczna: Operacja dominujaca: porównywanie elementów. Wejście: ciag uporzadkowany w odwrotnej kolejności. Koszt: T(n) = n 1 = n(n 1)/2 = O(n 2 ) Złożoność optymistyczna: Operacja dominujaca: porównywanie elementów. Wejście: wszystkie permutacje ciagu wejściowego równie prawdopodobne. Koszt: O(n 2 ). Złożoność pamięciowa: O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 33 / 35

71 Sortowanie babelkowe - implementacja w C/C++ void bubblesort ( i n t A [ ], i n t n ) { for ( i n t i =0; i <n ; i ++) for ( i n t j =n 1; j > i ; j ) i f (A [ j ] < A [ j 1]) { / / zamiana A [ j 1] z A[ j ] i n t temp= A [ j 1]; A [ j 1] = A [ j ] ; A [ j ]= temp ; } } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 34 / 35

72 Sortowanie babelkowe - implementacja w C/C++ Zmodyfikowany algorytm sortowania babelkowego, którego wykonywanie kończy się z chwila stwierdzenia, że dana tablica a jest już posortowana. #include < s tdbool. h> void bubblesort ( i n t [ ] a, i n t n ) { bool done ; do { done = true ; for ( i n t j = 0; j < n ; j ++) { i f ( a [ j +1] < a [ j ] ) { swap ( a, j, j + 1 ) ; done = false ; } } } while (! done ) ; } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 1 35 / 35

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 3 2 Złożoność obliczeniowa algorytmów Notacja wielkie 0 Notacja Ω i Θ Algorytm Hornera Przykłady rzędów

Bardziej szczegółowo

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 1/1 Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 Kierunek: INFORMATYKA Specjalność: PRZEDMIOT OBOWIĄZKOWY DLA WSZYSTKICH STUDENTÓW. Tryb studiów: NIESTACJONARNE PIERWSZEGO STOPNIA

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

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

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Złożoność obliczeniowa algorytmu dr hab. 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 i Struktury

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

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

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

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

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę Zaliczenie Egzamin Ocena lub Zerówka Wykład z Zaliczenie Ocena Ćwiczenie Projekty 3 zadania Na ocenę Sylabus O http://wmii.uwm.edu.pl/~jakula/sylabus_23 17N1-ALISTD_PL.pdf JAK? CO? ILE? Polecane Cormen

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

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

Algorytmy i struktury danych.

Algorytmy i struktury danych. Kod przedmiotu: ASD Rodzaj przedmiotu: Wydział: Informatyki Kierunek: Informatyka Specjalność (specjalizacja): - Algorytmy i struktury danych. kierunkowy ; obowiązkowy Poziom studiów: pierwszego stopnia

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

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

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

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

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

Struktury danych i złożoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 2 godz., Projekt 1 godz.. Strona kursu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html Struktury

Bardziej szczegółowo

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17 Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2015 2019 Realizacja w roku akademickim 2016/17 1.1. Podstawowe informacje o przedmiocie/module Nazwa przedmiotu/ modułu

Bardziej szczegółowo

Złożoność Obliczeniowa Algorytmów

Złożoność Obliczeniowa Algorytmów Algorytmów Pożądane cechy dobrego algorytmu Dobry algorytm mający rozwiązywać jakiś problem powinien mieć 2 naturalne cechy: 1 (poprawność) zwracać prawidłowy wynik (dokładniej: zgodność z warunkiem końcowym

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

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy: Temat: Powtórzenie wiadomości z PODSTAW INFORMATYKI I: Pojęcia: złożoność czasowa algorytmu, rząd funkcji kosztu. Algorytmy. Metody programistyczne. Struktury danych. Literatura. A. V. Aho, J.E. Hopcroft,

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

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami. Wykład 1 Wprowadzenie do algorytmów Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami Wykaz literatury 1. N. Wirth - Algorytmy+Struktury Danych = Programy, WNT Warszawa

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Podniesienie poziomu wiedzy studentów z zagadnień dotyczących analizy i syntezy algorytmów z uwzględnieniem efektywności

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

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

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

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

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

KARTA MODUŁU KSZTAŁCENIA

KARTA MODUŁU KSZTAŁCENIA KARTA MODUŁU KSZTAŁCENIA I. Informacje ogólne 1 Nazwa modułu kształcenia Algorytmy i struktury danych 2 Nazwa jednostki prowadzącej moduł Instytut Informatyki, Zakład Informatyki Stosowanej 3 Kod modułu

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

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3 KARTA PRZEDMIOTU 1. Informacje ogólne Nazwa przedmiotu i kod (wg planu studiów): Nazwa przedmiotu (j. ang.): Kierunek studiów: Specjalność/specjalizacja: Poziom kształcenia: Profil kształcenia: Forma studiów:

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

Efektywność algorytmów

Efektywność algorytmów Efektywność algorytmów Algorytmika Algorytmika to dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów, w kontekście ich przydatności do rozwiązywania problemów

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

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4 KARTA PRZEDMIOTU 1. Informacje ogólne Nazwa przedmiotu i kod (wg planu studiów): Nazwa przedmiotu (j. ang.): Kierunek studiów: Specjalność/specjalizacja: Poziom kształcenia: Profil kształcenia: Forma studiów:

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH ALGORYTMY I STRUKTURY DANYCH wykład 1 wprowadzenie, struktury sterujace, projektowanie algorytmów dr hab. inż. Andrzej Obuchowicz, prof. UZ Instytut Sterowania i Systemów Informatycznych UZ p. 425 A2 tel.

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

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 3a: Złożoność obliczeniowa algorytmów http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Złożoność obliczeniowa i asymptotyczna

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

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques KARTA KURSU Nazwa Nazwa w j. ang. Algorytmy, struktury danych i techniki programowania Algorithms, Data Structures and Programming Techniques Kod Punktacja ECTS* 3 Koordynator dr Paweł Pasteczka Zespół

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

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

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

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

Informatyka 1. Złożoność obliczeniowa

Informatyka 1. Złożoność obliczeniowa Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

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

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

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P) Zał nr 4 do ZW WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI KARTA PRZEDMIOTU Nazwa w języku polskim : Algorytmy i Struktury Danych Nazwa w języku angielskim : Algorithms adn Data Structures Kierunek studiów

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

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

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11.

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11. Państwowa Wyższa Szko la Zawodowa w Nowym Sa czu Karta przedmiotu Instytut Techniczny obowiązuje studentów rozpoczynających studia w roku akademickim 201/2016 Kierunek studiów: Informatyka Profil: Ogólnoakademicki

Bardziej szczegółowo

Teoria obliczeń i złożoność obliczeniowa

Teoria obliczeń i złożoność obliczeniowa Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy

Bardziej szczegółowo

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Grażyna Koba MIGRA 2019 Spis treści (propozycja na 2*32 = 64 godziny lekcyjne) Moduł A. Wokół komputera i sieci komputerowych

Bardziej szczegółowo

Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych 1 Drzewa poszukiwań binarnych Kacper Pawłowski Streszczenie W tej pracy przedstawię zagadnienia związane z drzewami poszukiwań binarnych. Przytoczę poszczególne operacje na tej strukturze danych oraz ich

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

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

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. (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

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

Kierunek: Informatyka. Przedmiot:

Kierunek: Informatyka. Przedmiot: Kierunek: Informatyka Przedmiot: ALGORYTMY I Z LOŻONOŚĆ Czas trwania: Przedmiot: Jezyk wyk ladowy: semestr III obowiazkowy polski Rodzaj zaj eć Wyk lad Laboratorium Prowadzacy Prof. dr hab. Wojciech Penczek

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

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

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Sylabus modułu: Informatyka (03-MO1N-12-Info) 1. Informacje ogólne koordynator modułu

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

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

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

Podyplomowe Studium Programowania i Systemów Baz Danych

Podyplomowe Studium Programowania i Systemów Baz Danych Podyplomowe Studium Programowania i Systemów Baz Danych Algorytmy, struktury danych i techniki programowania 15 godz. wykładu / 15 godz. laboratorium dr inż. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info

Bardziej szczegółowo

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Sylabus modułu: Informatyka A (03-MO1S-12-InfoA) 1. Informacje ogólne koordynator modułu

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

[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

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