Sortowanie przez wstawianie

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

Download "Sortowanie przez wstawianie"

Transkrypt

1 Sortowanie przez wstawianie Wykład 1 26 lutego 2019 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

2 Outline 1 Literatura 2 Algorytm 3 Problem sortowania Pseudokod 4 Sortowanie przez wstawianie Analiza poprawności algorytmu - niezmiennik pętli Analiza złożoności obliczeniowej 5 Notacja asymptotyczna 6 Sortowanie przez wstawianie - podsumowanie (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

3 Literatura 1 Thomas H. Coremen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Wprowadzenie do algorytmów (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

4 Literatura 1 Thomas H. Coremen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Wprowadzenie do algorytmów 2 Donald E. Knuth - Sztuka Programowania 3 Richard Johnsonbaugh, Marcus Schaeffer - Algorithms 4 Richard Neapolitan, Kumarss Naimipour - Podstawy algorytmów z przykładami w C++ (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

5 Literatura 1 Thomas H. Coremen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Wprowadzenie do algorytmów 2 Donald E. Knuth - Sztuka Programowania 3 Richard Johnsonbaugh, Marcus Schaeffer - Algorithms 4 Richard Neapolitan, Kumarss Naimipour - Podstawy algorytmów z przykładami w C++ 5 Kyle Loudon - Algorytmy w C 6 Robert Sedgewick - Algorytmy w C++ (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

6 Literatura 1 Thomas H. Coremen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Wprowadzenie do algorytmów 2 Donald E. Knuth - Sztuka Programowania 3 Richard Johnsonbaugh, Marcus Schaeffer - Algorithms 4 Richard Neapolitan, Kumarss Naimipour - Podstawy algorytmów z przykładami w C++ 5 Kyle Loudon - Algorytmy w C 6 Robert Sedgewick - Algorytmy w C++ 7 Steven S. Skiena - The Algorithm Design Manual 8 Jeff Edmonds - How to think about algorithms 9 Jon Kleinberd, Eva Tardos - Algorithm Design 10 Anany Levitin - The design and analysis of Algorithms (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

7 Literatura 1 Thomas H. Coremen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Wprowadzenie do algorytmów 2 Donald E. Knuth - Sztuka Programowania 3 Richard Johnsonbaugh, Marcus Schaeffer - Algorithms 4 Richard Neapolitan, Kumarss Naimipour - Podstawy algorytmów z przykładami w C++ 5 Kyle Loudon - Algorytmy w C 6 Robert Sedgewick - Algorytmy w C++ 7 Steven S. Skiena - The Algorithm Design Manual 8 Jeff Edmonds - How to think about algorithms 9 Jon Kleinberd, Eva Tardos - Algorithm Design 10 Anany Levitin - The design and analysis of Algorithms 11 Simon Harris, James Ross - Algorytmy. Od podstaw (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

8 Literatura 1 Thomas H. Coremen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Wprowadzenie do algorytmów 2 Donald E. Knuth - Sztuka Programowania 3 Richard Johnsonbaugh, Marcus Schaeffer - Algorithms 4 Richard Neapolitan, Kumarss Naimipour - Podstawy algorytmów z przykładami w C++ 5 Kyle Loudon - Algorytmy w C 6 Robert Sedgewick - Algorytmy w C++ 7 Steven S. Skiena - The Algorithm Design Manual 8 Jeff Edmonds - How to think about algorithms 9 Jon Kleinberd, Eva Tardos - Algorithm Design 10 Anany Levitin - The design and analysis of Algorithms 11 Simon Harris, James Ross - Algorytmy. Od podstaw 12 Brian Christian, Tom Griffiths - Algorithms to Live By: The Computer Science of Human Decisions (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

9 Literatura 1 Thomas H. Coremen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Wprowadzenie do algorytmów 2 Donald E. Knuth - Sztuka Programowania 3 Richard Johnsonbaugh, Marcus Schaeffer - Algorithms 4 Richard Neapolitan, Kumarss Naimipour - Podstawy algorytmów z przykładami w C++ 5 Kyle Loudon - Algorytmy w C 6 Robert Sedgewick - Algorytmy w C++ 7 Steven S. Skiena - The Algorithm Design Manual 8 Jeff Edmonds - How to think about algorithms 9 Jon Kleinberd, Eva Tardos - Algorithm Design 10 Anany Levitin - The design and analysis of Algorithms 11 Simon Harris, James Ross - Algorytmy. Od podstaw 12 Brian Christian, Tom Griffiths - Algorithms to Live By: The Computer Science of Human Decisions (Algorytmy. Kiedy mniej myśleć. I inne sposoby na racjonalne życie) (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

10 Algorytm Słowo algorytm pochodzi od nazwiska Abu Ja far Muhammed ibn Musa Al-Khowarizmi matematyka perskiego z IX wieku, początkowo oznaczało ono zasady operacji arytmetycznych na liczbach dziesiętnych (arabskich [indyjskich]). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

11 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

12 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

13 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: Wejście - algorytm wymaga danych wejściowych. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

14 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: Wejście - algorytm wymaga danych wejściowych. Wyjście - algorytm produkuje dane wyjściowe. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

15 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: Wejście - algorytm wymaga danych wejściowych. Wyjście - algorytm produkuje dane wyjściowe. Ścisłość - kolejne kroki są ściśle określone. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

16 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: Wejście - algorytm wymaga danych wejściowych. Wyjście - algorytm produkuje dane wyjściowe. Ścisłość - kolejne kroki są ściśle określone. Determinizm - wyniki kroków pośrednich są jednoznaczne i określone tylko przez dane wejściowe i wyniki kroków poprzedzających. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

17 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: Wejście - algorytm wymaga danych wejściowych. Wyjście - algorytm produkuje dane wyjściowe. Ścisłość - kolejne kroki są ściśle określone. Determinizm - wyniki kroków pośrednich są jednoznaczne i określone tylko przez dane wejściowe i wyniki kroków poprzedzających. Skończoność - algorytm zatrzymuje się po skończonej liczbie kroków. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

18 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: Wejście - algorytm wymaga danych wejściowych. Wyjście - algorytm produkuje dane wyjściowe. Ścisłość - kolejne kroki są ściśle określone. Determinizm - wyniki kroków pośrednich są jednoznaczne i określone tylko przez dane wejściowe i wyniki kroków poprzedzających. Skończoność - algorytm zatrzymuje się po skończonej liczbie kroków. Poprawność - wynik wyprodukowany przez algorytm jest poprawny. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

19 Algorytm Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe, zwane wynikiem działania algorytmu. Własności algorytmów: Wejście - algorytm wymaga danych wejściowych. Wyjście - algorytm produkuje dane wyjściowe. Ścisłość - kolejne kroki są ściśle określone. Determinizm - wyniki kroków pośrednich są jednoznaczne i określone tylko przez dane wejściowe i wyniki kroków poprzedzających. Skończoność - algorytm zatrzymuje się po skończonej liczbie kroków. Poprawność - wynik wyprodukowany przez algorytm jest poprawny. Ogólność - algorytm stosuje się do zbioru danych wejściowych. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

20 Algorytm Wiele obecnie używanych algorytmów nie spełnia warunku ogólności, skończoności, deterministyczności. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

21 Algorytm Wiele obecnie używanych algorytmów nie spełnia warunku ogólności, skończoności, deterministyczności. Przykłady: system operacyjny nie jest skończony, algorytmy pisane na maszyny wieloprocesorowe, bądź środowiska rozproszone rzadko są deterministyczne. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

22 Algorytm Wiele obecnie używanych algorytmów nie spełnia warunku ogólności, skończoności, deterministyczności. Przykłady: system operacyjny nie jest skończony, algorytmy pisane na maszyny wieloprocesorowe, bądź środowiska rozproszone rzadko są deterministyczne. Wiele praktycznych problemów jest za trudnych do efektywnego rozwiązania, dlatego często nagina się kryterium ogólności lub poprawności. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

23 Problem sortowania Sortowanie - uporządkowanie liczb z danego ciągu w porządku niemalejącym. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

24 Problem sortowania Sortowanie - uporządkowanie liczb z danego ciągu w porządku niemalejącym. Problem sortowania: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

25 Problem sortowania Sortowanie - uporządkowanie liczb z danego ciągu w porządku niemalejącym. Problem sortowania: Dane wejściowe: Ciąg n liczb (a 1, a 2,..., a n ). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

26 Problem sortowania Sortowanie - uporządkowanie liczb z danego ciągu w porządku niemalejącym. Problem sortowania: Dane wejściowe: Ciąg n liczb (a 1, a 2,..., a n ). Dane wyjściowe: Permutacja (a 1, a 2,..., a n) ciągu wejściowego taka, że a 1 a 2 a n. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

27 Pseudokod Wcięcia odpowiadają strukturze blokowej. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

28 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

29 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... Instrukcje warunkowe: if-then-else, (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

30 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... Instrukcje warunkowe: if-then-else, Komentarze: //, / /, (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

31 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... Instrukcje warunkowe: if-then-else, Komentarze: //, / /, Przypisanie: k 12, i j (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

32 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... Instrukcje warunkowe: if-then-else, Komentarze: //, / /, Przypisanie: k 12, i j Zmienne lokalne w danej procedurze (key, j, i). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

33 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... Instrukcje warunkowe: if-then-else, Komentarze: //, / /, Przypisanie: k 12, i j Zmienne lokalne w danej procedurze (key, j, i). Dostęp do elementu tablicy: A[i] to i-ty element tablicy A. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

34 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... Instrukcje warunkowe: if-then-else, Komentarze: //, / /, Przypisanie: k 12, i j Zmienne lokalne w danej procedurze (key, j, i). Dostęp do elementu tablicy: A[i] to i-ty element tablicy A. Dane złożone z kilku części są organizowane jako obiekty, składające się z atrybutów lub pól. length[a] atrybut mówiący o liczbie elementów tablicy A. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

35 Pseudokod Wcięcia odpowiadają strukturze blokowej. Instrukcje iteracyjne: while, for, repeat,... Instrukcje warunkowe: if-then-else, Komentarze: //, / /, Przypisanie: k 12, i j Zmienne lokalne w danej procedurze (key, j, i). Dostęp do elementu tablicy: A[i] to i-ty element tablicy A. Dane złożone z kilku części są organizowane jako obiekty, składające się z atrybutów lub pól. length[a] atrybut mówiący o liczbie elementów tablicy A. Parametry przekazywane są do procedury przez wartość. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

36 Sortowanie przez wstawianie INSERTION-SORT(A) 1: for j 2 to length[a] do 2: key A[j] 3: i j 1 4: //Wstaw A[j] w posortowany ciąg A[1... j-1] 5: while i > 0 and A[i] > key do 6: A[i + 1] A[i] 7: i i 1 8: A[i + 1] key (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

37 Sortowanie przez wstawianie INSERTION-SORT(A) 1: for j 2 to length[a] do 2: key A[j] 3: i j 1 4: //Wstaw A[j] w posortowany ciąg A[1... j-1] 5: while i > 0 and A[i] > key do 6: A[i + 1] A[i] 7: i i 1 8: A[i + 1] key Niezmiennik pętli dla sortowania przez wstawianie: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

38 Sortowanie przez wstawianie INSERTION-SORT(A) 1: for j 2 to length[a] do 2: key A[j] 3: i j 1 4: //Wstaw A[j] w posortowany ciąg A[1... j-1] 5: while i > 0 and A[i] > key do 6: A[i + 1] A[i] 7: i i 1 8: A[i + 1] key Niezmiennik pętli dla sortowania przez wstawianie: Na początku każdej iteracji pętli for w wierszach 1 8 podtablica A[1..j-1] składa się z elementów znajdujących się pierwotnie w A[1..j-1], ale w porządku niemalejącym. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

39 Sortowanie przez wstawianie INSERTION-SORT(A) 1: for j 2 to length[a] do 2: key A[j] 3: i j 1 4: //Wstaw A[j] w posortowany ciąg A[1... j-1] 5: while i > 0 and A[i] > key do 6: A[i + 1] A[i] 7: i i 1 8: A[i + 1] key Niezmiennik pętli dla sortowania przez wstawianie: Na początku każdej iteracji pętli for w wierszach 1 8 podtablica A[1..j-1] składa się z elementów znajdujących się pierwotnie w A[1..j-1], ale w porządku niemalejącym. Przykład (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

40 Niezmiennik pętli - schemat dowodu Dowód poprawności algorytmu z wykorzystaniem niezmiennika pętli: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

41 Niezmiennik pętli - schemat dowodu Dowód poprawności algorytmu z wykorzystaniem niezmiennika pętli: Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

42 Niezmiennik pętli - schemat dowodu Dowód poprawności algorytmu z wykorzystaniem niezmiennika pętli: Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Utrzymanie: Jeśli niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli, to pozostaje prawdziwy przed następną. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

43 Niezmiennik pętli - schemat dowodu Dowód poprawności algorytmu z wykorzystaniem niezmiennika pętli: Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Utrzymanie: Jeśli niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli, to pozostaje prawdziwy przed następną. Zakończenie: Kiedy pętla się kończy z niezmiennika wynika użyteczna własność, która pozwala udowodnić poprawność algorytmu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

44 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

45 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

46 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Dla j=2, podtablica A[1..j-1] zawiera tylko jeden element A[1], który od początku znajdował się na tej pozycji. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

47 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Dla j=2, podtablica A[1..j-1] zawiera tylko jeden element A[1], który od początku znajdował się na tej pozycji. Jednoelementowy fragment tablicy jest zawsze posortowany, niezmiennik jest spełniony przed pierwszą pętlą. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

48 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Dla j=2, podtablica A[1..j-1] zawiera tylko jeden element A[1], który od początku znajdował się na tej pozycji. Jednoelementowy fragment tablicy jest zawsze posortowany, niezmiennik jest spełniony przed pierwszą pętlą. Utrzymanie: Niezmiennik pętli powinien być zachowany w każdej iteracji. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

49 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Dla j=2, podtablica A[1..j-1] zawiera tylko jeden element A[1], który od początku znajdował się na tej pozycji. Jednoelementowy fragment tablicy jest zawsze posortowany, niezmiennik jest spełniony przed pierwszą pętlą. Utrzymanie: Niezmiennik pętli powinien być zachowany w każdej iteracji. Działanie zewnętrznej pętli for polega na przesuwaniu A[j-1], A[j-2], A[j-3],... o jedną pozycję w prawo tak długo, aż zostanie znaleziona właściwa pozycja dla A[j] (wiersze 4-7). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

50 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Dla j=2, podtablica A[1..j-1] zawiera tylko jeden element A[1], który od początku znajdował się na tej pozycji. Jednoelementowy fragment tablicy jest zawsze posortowany, niezmiennik jest spełniony przed pierwszą pętlą. Utrzymanie: Niezmiennik pętli powinien być zachowany w każdej iteracji. Działanie zewnętrznej pętli for polega na przesuwaniu A[j-1], A[j-2], A[j-3],... o jedną pozycję w prawo tak długo, aż zostanie znaleziona właściwa pozycja dla A[j] (wiersze 4-7). Na znalezioną pozycję zostaje wstawiona wartość key, czyli A[j] (wiersz 8). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

51 Niezmiennik pętli - poprawność algorytmu Dla pętli for moment sprawdzenia niezmiennika przed pierwszą iteracją, następuje po przypisaniu wartości zmiennej sterującej a przed sprawdzeniem warunku. Inicjowanie: Niezmiennik pętli jest prawdziwy przed pierwszą iteracją pętli. Dla j=2, podtablica A[1..j-1] zawiera tylko jeden element A[1], który od początku znajdował się na tej pozycji. Jednoelementowy fragment tablicy jest zawsze posortowany, niezmiennik jest spełniony przed pierwszą pętlą. Utrzymanie: Niezmiennik pętli powinien być zachowany w każdej iteracji. Działanie zewnętrznej pętli for polega na przesuwaniu A[j-1], A[j-2], A[j-3],... o jedną pozycję w prawo tak długo, aż zostanie znaleziona właściwa pozycja dla A[j] (wiersze 4-7). Na znalezioną pozycję zostaje wstawiona wartość key, czyli A[j] (wiersz 8). Operacje te zachowują niezmiennik pętli. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

52 Niezmiennik pętli - poprawność algorytmu Zakończenie: Co dzieje się kiedy pętla się kończy? (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

53 Niezmiennik pętli - poprawność algorytmu Zakończenie: Co dzieje się kiedy pętla się kończy? Pętla się kończy, gdy wartość j przekracza n, tzn. j = n + 1. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

54 Niezmiennik pętli - poprawność algorytmu Zakończenie: Co dzieje się kiedy pętla się kończy? Pętla się kończy, gdy wartość j przekracza n, tzn. j = n + 1. Wstawiając n + 1 w miejsce n + 1 w sformułowaniu niezmiennika pętli, wnioskujemy, że podtablica A[1..n] składa się z elementów znajdujących się pierwotnie w A[1..n], ale w kolejności niemalejącej. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

55 Niezmiennik pętli - poprawność algorytmu Zakończenie: Co dzieje się kiedy pętla się kończy? Pętla się kończy, gdy wartość j przekracza n, tzn. j = n + 1. Wstawiając n + 1 w miejsce n + 1 w sformułowaniu niezmiennika pętli, wnioskujemy, że podtablica A[1..n] składa się z elementów znajdujących się pierwotnie w A[1..n], ale w kolejności niemalejącej. Podtablica A[1..n] posortowana, zatem cała tablica jest posortowana. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

56 Niezmiennik pętli - poprawność algorytmu Zakończenie: Co dzieje się kiedy pętla się kończy? Pętla się kończy, gdy wartość j przekracza n, tzn. j = n + 1. Wstawiając n + 1 w miejsce n + 1 w sformułowaniu niezmiennika pętli, wnioskujemy, że podtablica A[1..n] składa się z elementów znajdujących się pierwotnie w A[1..n], ale w kolejności niemalejącej. Podtablica A[1..n] posortowana, zatem cała tablica jest posortowana. Algorytm jest poprawny. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

57 Analiza złożoności obliczeniowej Analiza złożoności - określamy zasoby potrzebne do wykonania algorytmu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

58 Analiza złożoności obliczeniowej Analiza złożoności - określamy zasoby potrzebne do wykonania algorytmu. Zasoby: czas obliczeń, pamięć, szerokość kanału komunikacyjnego, itp. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

59 Analiza złożoności obliczeniowej Analiza złożoności - określamy zasoby potrzebne do wykonania algorytmu. Zasoby: czas obliczeń, pamięć, szerokość kanału komunikacyjnego, itp. Cel: Wybór optymalnego algorytmu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

60 Analiza złożoności obliczeniowej Analiza złożoności - określamy zasoby potrzebne do wykonania algorytmu. Zasoby: czas obliczeń, pamięć, szerokość kanału komunikacyjnego, itp. Cel: Wybór optymalnego algorytmu. Założenia analizy złożoności obliczeniowej: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

61 Analiza złożoności obliczeniowej Analiza złożoności - określamy zasoby potrzebne do wykonania algorytmu. Zasoby: czas obliczeń, pamięć, szerokość kanału komunikacyjnego, itp. Cel: Wybór optymalnego algorytmu. Założenia analizy złożoności obliczeniowej: Obliczenia realizujemy na jednoprocesorowej (jednordzeniowej) maszynie o swobodnym dostępie do pamięci (RAM). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

62 Analiza złożoności obliczeniowej Analiza złożoności - określamy zasoby potrzebne do wykonania algorytmu. Zasoby: czas obliczeń, pamięć, szerokość kanału komunikacyjnego, itp. Cel: Wybór optymalnego algorytmu. Założenia analizy złożoności obliczeniowej: Obliczenia realizujemy na jednoprocesorowej (jednordzeniowej) maszynie o swobodnym dostępie do pamięci (RAM). Instrukcje wykonywane są sekwencyjnie. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

63 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

64 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

65 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

66 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

67 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

68 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

69 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: sortowanie - liczba elementów w ciągu wejściowym, (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

70 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: sortowanie - liczba elementów w ciągu wejściowym, mnożenie dwóch liczb całkowitych - całkowita liczba bitów, (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

71 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: sortowanie - liczba elementów w ciągu wejściowym, mnożenie dwóch liczb całkowitych - całkowita liczba bitów, operacje na grafach - liczba wierzchołków i liczba krawędzi grafu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

72 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: sortowanie - liczba elementów w ciągu wejściowym, mnożenie dwóch liczb całkowitych - całkowita liczba bitów, operacje na grafach - liczba wierzchołków i liczba krawędzi grafu. Czas działania - dla konkretnych danych wejściowych - liczba elementarnych operacji lub kroków. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

73 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: sortowanie - liczba elementów w ciągu wejściowym, mnożenie dwóch liczb całkowitych - całkowita liczba bitów, operacje na grafach - liczba wierzchołków i liczba krawędzi grafu. Czas działania - dla konkretnych danych wejściowych - liczba elementarnych operacji lub kroków. Czas działania - założenia: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

74 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: sortowanie - liczba elementów w ciągu wejściowym, mnożenie dwóch liczb całkowitych - całkowita liczba bitów, operacje na grafach - liczba wierzchołków i liczba krawędzi grafu. Czas działania - dla konkretnych danych wejściowych - liczba elementarnych operacji lub kroków. Czas działania - założenia: elementarna operacja jest maszynowo niezależna, (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

75 Analiza złożoności obliczeniowej Czas działania procedury INSERTION-SORT zależy od: rozmiaru danych wejściowych, stopnia posortowania ciągów wejściowych. Czas działania algorytmu rośnie z rozmiarem danych wejściowych. Należy zdefiniować: czas działania oraz rozmiar danych wejściowych. Rozmiar danych wejściowych - zależy istotnie od rozważanego problemu: sortowanie - liczba elementów w ciągu wejściowym, mnożenie dwóch liczb całkowitych - całkowita liczba bitów, operacje na grafach - liczba wierzchołków i liczba krawędzi grafu. Czas działania - dla konkretnych danych wejściowych - liczba elementarnych operacji lub kroków. Czas działania - założenia: elementarna operacja jest maszynowo niezależna, wykonanie i-tego wiersza wymaga czasu c i, przy czym c i jest stałą. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

76 Analiza złożoności obliczeniowej INSERTION SORT(A) koszt liczba wywołań 1: for j 2 to length[a] c 1 n 2: key A[j] c 2 n 1 3: i j 1 c 3 n 1 4: //Wstaw... 0 n 1 5: while i > 0 and A[i] > key c 5 n t j j=2 6: A[i + 1] A[i] c 6 n t j 1 j=2 7: i i 1 c 7 n t j 1 j=2 8: A[i + 1] key c 8 n 1 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

77 Analiza złożoności obliczeniowej INSERTION SORT(A) koszt liczba wywołań 1: for j 2 to length[a] c 1 n 2: key A[j] c 2 n 1 3: i j 1 c 3 n 1 4: //Wstaw... 0 n 1 5: while i > 0 and A[i] > key c 5 n t j j=2 6: A[i + 1] A[i] c 6 n t j 1 j=2 7: i i 1 c 7 n t j 1 j=2 8: A[i + 1] key c 8 n 1 Czas działania algorytmu suma czasów działania poszczególnych instrukcji. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

78 Analiza złożoności obliczeniowej INSERTION SORT(A) koszt liczba wywołań 1: for j 2 to length[a] c 1 n 2: key A[j] c 2 n 1 3: i j 1 c 3 n 1 4: //Wstaw... 0 n 1 5: while i > 0 and A[i] > key c 5 n t j j=2 6: A[i + 1] A[i] c 6 n t j 1 j=2 7: i i 1 c 7 n t j 1 j=2 8: A[i + 1] key c 8 n 1 Czas działania algorytmu suma czasów działania poszczególnych instrukcji. Czas działania instrukcji, która wykonuje się w czasie c i i jest powtarzana n razy wynosi nc i. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

79 Analiza złożoności obliczeniowej - przypadek optymistyczny Czas działania algorytmu: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + n c 5 j=2 t j + c 6 n j=2 n (t j 1) + c 7 (t j 1) + c 8 (n 1) j=2 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

80 Analiza złożoności obliczeniowej - przypadek optymistyczny Czas działania algorytmu: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + n c 5 j=2 t j + c 6 n j=2 n (t j 1) + c 7 (t j 1) + c 8 (n 1) j=2 Czas działania algorytmu może się różnic nawet dla danych o tym samym rozmiarze. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

81 Analiza złożoności obliczeniowej - przypadek optymistyczny Czas działania algorytmu: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + n c 5 j=2 t j + c 6 n j=2 n (t j 1) + c 7 (t j 1) + c 8 (n 1) j=2 Czas działania algorytmu może się różnic nawet dla danych o tym samym rozmiarze. Przypadek optymistyczny dla sortowania przez wstawianie tablica wejściowa jest posortowana. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

82 Analiza złożoności obliczeniowej - przypadek optymistyczny Czas działania algorytmu: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + n c 5 j=2 t j + c 6 n j=2 n (t j 1) + c 7 (t j 1) + c 8 (n 1) j=2 Czas działania algorytmu może się różnic nawet dla danych o tym samym rozmiarze. Przypadek optymistyczny dla sortowania przez wstawianie tablica wejściowa jest posortowana. Dla każdego j = 2, 3,..., n zachodzi A[i] key, zatem t j = 1. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

83 Analiza złożoności obliczeniowej - przypadek optymistyczny Czas działania algorytmu: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + n c 5 j=2 t j + c 6 n j=2 n (t j 1) + c 7 (t j 1) + c 8 (n 1) j=2 Czas działania algorytmu może się różnic nawet dla danych o tym samym rozmiarze. Przypadek optymistyczny dla sortowania przez wstawianie tablica wejściowa jest posortowana. Dla każdego j = 2, 3,..., n zachodzi A[i] key, zatem t j = 1. Minimalny czas działania: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 5 (n 1) + c 8 (n 1) (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

84 Analiza złożoności obliczeniowej - przypadek optymistyczny Czas działania algorytmu: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + n c 5 j=2 t j + c 6 n j=2 n (t j 1) + c 7 (t j 1) + c 8 (n 1) j=2 Czas działania algorytmu może się różnic nawet dla danych o tym samym rozmiarze. Przypadek optymistyczny dla sortowania przez wstawianie tablica wejściowa jest posortowana. Dla każdego j = 2, 3,..., n zachodzi A[i] key, zatem t j = 1. Minimalny czas działania: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 5 (n 1) + c 8 (n 1) T (n) = (c 1 + c 2 + c 3 + c 5 + c 8 )n (c 2 + c 3 + c 5 + c 8 ) (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

85 Analiza złożoności obliczeniowej - przypadek optymistyczny Czas działania algorytmu: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + n c 5 j=2 t j + c 6 n j=2 n (t j 1) + c 7 (t j 1) + c 8 (n 1) j=2 Czas działania algorytmu może się różnic nawet dla danych o tym samym rozmiarze. Przypadek optymistyczny dla sortowania przez wstawianie tablica wejściowa jest posortowana. Dla każdego j = 2, 3,..., n zachodzi A[i] key, zatem t j = 1. Minimalny czas działania: T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 5 (n 1) + c 8 (n 1) T (n) = (c 1 + c 2 + c 3 + c 5 + c 8 )n (c 2 + c 3 + c 5 + c 8 ) T (n) = an + b (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

86 Analiza złożoności obliczeniowej - przypadek pesymistyczny Przypadek pesymistyczny tablica wejściowa posortowana w kierunku odwrotnym. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

87 Analiza złożoności obliczeniowej - przypadek pesymistyczny Przypadek pesymistyczny tablica wejściowa posortowana w kierunku odwrotnym. Porównujemy każdy A[j] z każdym elementem podtablicy A[1...j 1], w takim przypadku t j = j dla j = 2, 3,..., n. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

88 Analiza złożoności obliczeniowej - przypadek pesymistyczny Przypadek pesymistyczny tablica wejściowa posortowana w kierunku odwrotnym. Porównujemy każdy A[j] z każdym elementem podtablicy A[1...j 1], w takim przypadku t j = j dla j = 2, 3,..., n. n t j = n j = j=2 j=2 n(n + 1) 2 1 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

89 Analiza złożoności obliczeniowej - przypadek pesymistyczny Przypadek pesymistyczny tablica wejściowa posortowana w kierunku odwrotnym. Porównujemy każdy A[j] z każdym elementem podtablicy A[1...j 1], w takim przypadku t j = j dla j = 2, 3,..., n. n t j = n j = j=2 j=2 n(n + 1) 2 n (t j 1) = n (j 1) = j=2 j=2 1 n(n 1) 2 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

90 Analiza złożoności obliczeniowej - przypadek pesymistyczny Przypadek pesymistyczny tablica wejściowa posortowana w kierunku odwrotnym. Porównujemy każdy A[j] z każdym elementem podtablicy A[1...j 1], w takim przypadku t j = j dla j = 2, 3,..., n. n t j = n j = j=2 j=2 n(n + 1) 2 n (t j 1) = n (j 1) = j=2 j=2 1 n(n 1) 2 T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 5 ( c 6 n(n 1) 2 + c 7 n(n 1) 2 + c 8 (n 1) n(n + 1) 2 1) + (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

91 Analiza złożoności obliczeniowej - przypadek pesymistyczny Przypadek pesymistyczny tablica wejściowa posortowana w kierunku odwrotnym. Porównujemy każdy A[j] z każdym elementem podtablicy A[1...j 1], w takim przypadku t j = j dla j = 2, 3,..., n. n t j = n j = j=2 j=2 n(n + 1) 2 n (t j 1) = n (j 1) = j=2 j=2 1 n(n 1) 2 n(n + 1) T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 5 ( 1) + 2 n(n 1) n(n 1) c 6 + c 7 + c 8 (n 1) 2 2 T (n) = ( c c c ) 7 2 n 2 + ( c 1 + c 2 + c 3 + c c c ) c 8 n + (c 2 + c 3 + c 5 + c 8 ) (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

92 Analiza złożoności obliczeniowej - przypadek pesymistyczny Przypadek pesymistyczny tablica wejściowa posortowana w kierunku odwrotnym. Porównujemy każdy A[j] z każdym elementem podtablicy A[1...j 1], w takim przypadku t j = j dla j = 2, 3,..., n. n t j = n j = j=2 j=2 n(n + 1) 2 n (t j 1) = n (j 1) = j=2 j=2 1 n(n 1) 2 n(n + 1) T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 5 ( 1) + 2 n(n 1) n(n 1) c 6 + c 7 + c 8 (n 1) 2 2 T (n) = ( c c c ) 7 2 n 2 + ( c 1 + c 2 + c 3 + c c c ) c 8 n + (c 2 + c 3 + c 5 + c 8 ) T (n) = an 2 + bn + c (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

93 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

94 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. Dla niektórych algorytmów pesymistyczny czas działania występuje dosyć często. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

95 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. Dla niektórych algorytmów pesymistyczny czas działania występuje dosyć często. Przypadek średni to czas zbliżony do pesymistycznego. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

96 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. Dla niektórych algorytmów pesymistyczny czas działania występuje dosyć często. Przypadek średni to czas zbliżony do pesymistycznego. Wybieramy n liczb i stosujemy sortowanie przez wstawianie. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

97 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. Dla niektórych algorytmów pesymistyczny czas działania występuje dosyć często. Przypadek średni to czas zbliżony do pesymistycznego. Wybieramy n liczb i stosujemy sortowanie przez wstawianie. Jak dużo czasu potrzeba na znalezienie miejsca w tablicy A[1... j 1], aby wstawić element A[j]? (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

98 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. Dla niektórych algorytmów pesymistyczny czas działania występuje dosyć często. Przypadek średni to czas zbliżony do pesymistycznego. Wybieramy n liczb i stosujemy sortowanie przez wstawianie. Jak dużo czasu potrzeba na znalezienie miejsca w tablicy A[1... j 1], aby wstawić element A[j]? Średnio połowa elementów tablicy A[1... j 1] jest mniejsza niż A[j], natomiast połowa większa. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

99 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. Dla niektórych algorytmów pesymistyczny czas działania występuje dosyć często. Przypadek średni to czas zbliżony do pesymistycznego. Wybieramy n liczb i stosujemy sortowanie przez wstawianie. Jak dużo czasu potrzeba na znalezienie miejsca w tablicy A[1... j 1], aby wstawić element A[j]? Średnio połowa elementów tablicy A[1... j 1] jest mniejsza niż A[j], natomiast połowa większa. Sprawdzamy zatem średnio połowę elementów podtablicy, czyli t j = j 2. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

100 Analiza złożoności obliczeniowej - przypadek średni Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla dowolnych danych wejściowych. Dla niektórych algorytmów pesymistyczny czas działania występuje dosyć często. Przypadek średni to czas zbliżony do pesymistycznego. Wybieramy n liczb i stosujemy sortowanie przez wstawianie. Jak dużo czasu potrzeba na znalezienie miejsca w tablicy A[1... j 1], aby wstawić element A[j]? Średnio połowa elementów tablicy A[1... j 1] jest mniejsza niż A[j], natomiast połowa większa. Sprawdzamy zatem średnio połowę elementów podtablicy, czyli t j = j 2. Licząc średni czas działania otrzymamy funkcję kwadratową względem rozmiaru danych, podobnie jak w przypadku pesymistycznym. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

101 Rząd wielkości funkcji Analizując procedurę INSERTION-SORT korzystaliśmy z pewnych uproszczeń. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

102 Rząd wielkości funkcji Analizując procedurę INSERTION-SORT korzystaliśmy z pewnych uproszczeń. Ignorujemy rzeczywisty koszt każdej instrukcji, używając stałych c i do reprezentacji tych kosztów. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

103 Rząd wielkości funkcji Analizując procedurę INSERTION-SORT korzystaliśmy z pewnych uproszczeń. Ignorujemy rzeczywisty koszt każdej instrukcji, używając stałych c i do reprezentacji tych kosztów. Pomijamy stałe c i wprowadzając stałe a, b, c. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

104 Rząd wielkości funkcji Analizując procedurę INSERTION-SORT korzystaliśmy z pewnych uproszczeń. Ignorujemy rzeczywisty koszt każdej instrukcji, używając stałych c i do reprezentacji tych kosztów. Pomijamy stałe c i wprowadzając stałe a, b, c. Rząd wielkości funkcji an 2 + bn + c określa najbardziej znaczący składnik w formule, czyli an 2. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

105 Rząd wielkości funkcji Analizując procedurę INSERTION-SORT korzystaliśmy z pewnych uproszczeń. Ignorujemy rzeczywisty koszt każdej instrukcji, używając stałych c i do reprezentacji tych kosztów. Pomijamy stałe c i wprowadzając stałe a, b, c. Rząd wielkości funkcji an 2 + bn + c określa najbardziej znaczący składnik w formule, czyli an 2. Pomijamy składniki niższych rzędów. Nieistotne dla dużego n. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

106 Notacja asymptotyczna - notacja Θ Dla danej funkcji g(n) oznaczamy przez Θ(g(n)) zbiór funkcji (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

107 Notacja asymptotyczna - notacja Θ Dla danej funkcji g(n) oznaczamy przez Θ(g(n)) zbiór funkcji Θ(g(n)) = f (n): istnieją dodatnie stałe c 1, c 2 i n 0 takie, że 0 c 1 g(n) f (n) c 2 g(n) dla wszystkich n n 0 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

108 Notacja asymptotyczna - notacja Θ Dla danej funkcji g(n) oznaczamy przez Θ(g(n)) zbiór funkcji Θ(g(n)) = f (n): istnieją dodatnie stałe c 1, c 2 i n 0 takie, że 0 c 1 g(n) f (n) c 2 g(n) dla wszystkich n n 0 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

109 Notacja asymptotyczna - notacja Θ Dla danej funkcji g(n) oznaczamy przez Θ(g(n)) zbiór funkcji Θ(g(n)) = f (n): istnieją dodatnie stałe c 1, c 2 i n 0 takie, że 0 c 1 g(n) f (n) c 2 g(n) dla wszystkich n n 0 Mówimy, że g(n) jest asymptotycznie dokładnym oszacowaniem dla f (n). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

110 Notacja asymptotyczna - notacja Θ Dla danej funkcji g(n) oznaczamy przez Θ(g(n)) zbiór funkcji Θ(g(n)) = f (n): istnieją dodatnie stałe c 1, c 2 i n 0 takie, że 0 c 1 g(n) f (n) c 2 g(n) dla wszystkich n n 0 Mówimy, że g(n) jest asymptotycznie dokładnym oszacowaniem dla f (n). Notacja Θ asymptotycznie ogranicza funkcję od góry i od dołu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

111 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

112 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji O(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 f (n) cg(n) dla wszystkich n n 0 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

113 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji O(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 f (n) cg(n) dla wszystkich n n 0 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

114 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji O(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 f (n) cg(n) dla wszystkich n n 0 Dla każdego n n 0, f (n) nie przekracza g(n). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

115 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji O(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 f (n) cg(n) dla wszystkich n n 0 Dla każdego n n 0, f (n) nie przekracza g(n). Notacja O asymptotycznie ogranicza funkcję od góry. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

116 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji O(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 f (n) cg(n) dla wszystkich n n 0 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

117 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji O(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 f (n) cg(n) dla wszystkich n n 0 Za pomocą notacji O opisujemy często czas działania, badając ogólna strukturę algorytmu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

118 Notacja asymptotyczna - notacja O Dla danej funkcji g(n) oznaczamy przez O(g(n)) zbiór funkcji O(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 f (n) cg(n) dla wszystkich n n 0 Za pomocą notacji O opisujemy często czas działania, badając ogólna strukturę algorytmu. Struktura podwójnie zagnieżdżonej pętli w algorytmie sortowania przez wstawianie daje górne oszacowanie O(n 2 ) na pesymistyczny czas działania. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

119 Notacja asymptotyczna - notacja Ω Dla danej funkcji g(n) oznaczamy przez Ω(g(n)) zbiór funkcji (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

120 Notacja asymptotyczna - notacja Ω Dla danej funkcji g(n) oznaczamy przez Ω(g(n)) zbiór funkcji Ω(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 cg(n) f (n) dla wszystkich n n 0 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

121 Notacja asymptotyczna - notacja Ω Dla danej funkcji g(n) oznaczamy przez Ω(g(n)) zbiór funkcji Ω(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 cg(n) f (n) dla wszystkich n n 0 (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

122 Notacja asymptotyczna - notacja Ω Dla danej funkcji g(n) oznaczamy przez Ω(g(n)) zbiór funkcji Ω(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 cg(n) f (n) dla wszystkich n n 0 Dla każdego n n 0, f (n) jest nie mniejsza niż cg(n). (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

123 Notacja asymptotyczna - notacja Ω Dla danej funkcji g(n) oznaczamy przez Ω(g(n)) zbiór funkcji Ω(g(n)) = f (n): istnieją dodatnie stałe c i n 0 takie, że 0 cg(n) f (n) dla wszystkich n n 0 Dla każdego n n 0, f (n) jest nie mniejsza niż cg(n). Notacja Ω asymptotycznie ogranicza funkcję od dołu. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

124 Sortowanie przez wstawianie T(n)=8*10-11 *n 2, Dell Precision 5820: Intel(R) Xeon(R) W-2155 CPU 3.30GHz Intel(R) Core(TM) i5-6600k CPU 3.50GHz Yoga 920: Intel(R) Core(TM) i7-8550u CPU 1.80GHz Thinkpad T580: Intel(R) Core(TM) i7-8550u CPU 1.80GHz Dell: Intel(R) Xeon(R) Gold 6146 CPU 3.20GHz AMD Phenom(tm) II X6 1090T Processor T(n)=30*10-11 *n 2, Intel(R) Core(TM)2 Duo CPU P GHz T(n) - czas sortowania [s] e+00 1e+05 2e+05 3e+05 4e+05 5e+05 6e+05 7e+05 8e+05 9e+05 1e+06 n - rozmiar tablicy (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

125 Sortowanie przez wstawianie - podsumowanie Złożoność obliczeniowa: (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

126 Sortowanie przez wstawianie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n), (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

127 Sortowanie przez wstawianie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n), T sr (n) = Θ(n 2 ), (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

128 Sortowanie przez wstawianie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n), T sr (n) = Θ(n 2 ), T p (n) = O(n 2 ) (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

129 Sortowanie przez wstawianie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n), T sr (n) = Θ(n 2 ), T p (n) = O(n 2 ) Złożoność pamięciowa: działa w miejscu, wymaga O(1) dodatkowej pamięci, tylko key jest poza tablicą. (Wykład 1) Sortowanie przez wstawianie 26 lutego / 25

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

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

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

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

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

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

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

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

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

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

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

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

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

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

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

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

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

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

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

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych

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

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

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

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

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

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

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

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

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

Złożoność obliczeniowa zadania, zestaw 2

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

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

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

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Maria Górska 9 stycznia 2010 1 Spis treści 1 Pojęcie algorytmu 3 2 Sposób

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

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

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

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

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

Algorytmy sortujące. Sortowanie bąbelkowe

Algorytmy sortujące. Sortowanie bąbelkowe Algorytmy sortujące Sortowanie bąbelkowe Sortowanie bąbelkowe - wstęp Algorytm sortowania bąbelkowego jest jednym z najstarszych algorytmów sortujących. Zasada działania opiera się na cyklicznym porównywaniu

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

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny

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

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

Podstawy Programowania Algorytmy i programowanie

Podstawy Programowania Algorytmy i programowanie Podstawy Programowania Algorytmy i programowanie Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Algorytm Algorytm w matematyce, informatyce, fizyce, itp. lub innej dziedzinie życia,

Bardziej szczegółowo

Wyszukiwanie. Wyszukiwanie binarne

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

Bardziej szczegółowo

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu

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

Sortowanie Shella Shell Sort

Sortowanie Shella Shell Sort Sortowanie Shella Shell Sort W latach 50-tych ubiegłego wieku informatyk Donald Shell zauważył, iż algorytm sortowania przez wstawianie pracuje bardzo efektywnie w przypadku gdy zbiór jest w dużym stopniu

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

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

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej Krzysztof Gniłka Twierdzenie o rekurencji uniwersalnej Spis treści Wstęp 3 Rozdział 1 Definicje i pomocnicze lematy 4 1 Części całkowite liczb 4 2 Logarytmy 9 3 Notacja asymptotyczna 12 Rozdział 2 Metoda

Bardziej szczegółowo

Projektowanie i Analiza Algorytmów

Projektowanie i Analiza Algorytmów POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNIK INFORMACYJNYCH Projektowanie i Analiza Algorytmów www.pk.edu.pl/~zk/piaa_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty

Bardziej szczegółowo

Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika Wykład z Podstaw Informatyki dla I roku BO Piotr Mika Napisanie programu komputerowego: Zasada rozwiązania zadania Stworzenie sekwencji kroków algorytmu Przykłady algorytmów z życia codziennego (2/1 6)

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

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Mariusz Różycki University of Cambridge Zajęcia będą mieć formę wykładową. Slajdy można znaleźć na stronie kursu: http://lw.mi.edu.pl/informatyka/algorytmy.

Bardziej szczegółowo

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

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

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

Technologie Informacyjne

Technologie Informacyjne POLITECHNIKA KRAKOWSKA - WIEiK - KATEDRA AUTOMATYKI Technologie Informacyjne www.pk.edu.pl/~zk/ti_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 3: Wprowadzenie do algorytmów i ich

Bardziej szczegółowo

(1) Poprawność Algorytmów

(1) Poprawność Algorytmów (1) Algorytmów Kontakt dr hab. Marcin, Katedra SIAM, PJATK Polecane Podręczniki: Ogólne: T.Cormen, C.Leiserson, R.Rivest et al. do Algorytmów, PWN 2018 (lub wydanie anglojęzyczne) G.Mirkowska et al. -

Bardziej szczegółowo

Algorytm selekcji Hoare a. Łukasz Miemus

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

Bardziej szczegółowo

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

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

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

Podstawy Informatyki. Algorytmy i ich poprawność

Podstawy Informatyki. Algorytmy i ich poprawność Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania

Bardziej szczegółowo

Zapis algorytmów: schematy blokowe i pseudokod 1

Zapis algorytmów: schematy blokowe i pseudokod 1 Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu

Bardziej szczegółowo

Algorytmy, reprezentacja algorytmów.

Algorytmy, reprezentacja algorytmów. Algorytmy, reprezentacja algorytmów. Wprowadzenie do algorytmów Najważniejszym pojęciem algorytmiki jest algorytm (ang. algorithm). Nazwa pochodzi od nazwiska perskiego astronoma, astrologa, matematyka

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

Algorytmy. Programowanie Proceduralne 1

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

Bardziej szczegółowo

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

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

i = n = n 1 + n 2 1 i 2 n 1. n(n + 1)(2n + 1) n (n + 1) =

i = n = n 1 + n 2 1 i 2 n 1. n(n + 1)(2n + 1) n (n + 1) = Druga zasada inducji matematycznej Niech m będzie liczbą całowitą, niech p(n) będzie ciągiem zdań zdefiniowanych na zbiorze {n Z: n m} oraz niech l będzie nieujemną liczbą całowitą. Jeśli (P) wszystie

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

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

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2012 andrzej.lachwa@uj.edu.pl 2/14 Funkcji podłogi z logarytmu można użyć do wyliczenia liczby cyfr liczby naturalnej k (k>0): w układzie dziesiętnym log 10 (k)

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

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

Technologie informacyjne Wykład VII-IX

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

Bardziej szczegółowo

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka

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

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

Algorytmika i pseudoprogramowanie

Algorytmika i pseudoprogramowanie Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry

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.

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