Algorytmy i Struktury Danych.

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

Download "Algorytmy i Struktury Danych."

Transkrypt

1 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 i Struktury Danych. Wykład 4 1 / 69

2 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 4 2 / 69

3 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). 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. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 2 / 69

4 Problem Sortowania - przykład, dane całkowite Dane wejściowe: Dane uporzadkowane: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 3 / 69

5 Problem Sortowania - przykład, rekordy danych Dane poczatkowe: Imię Nazwisko Pesel Jan Kowalski Jan Brzechwa Adrian Bala Piotr Kula Paweł Nowak Klucz Rekord Zadanie: Posortuj (uporzadkuj) tablicę N elementów (rekordów składajacych się z imienia, nazwiska i pesela) w kolejności rosnacej według klucza Nazwisko. Imię Nazwisko Pesel Adrian Bala Jan Brzechwa Jan Kowalski Piotr Kula Paweł Nowak Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 4 / 69

6 Komenda sort w Linux Dane wejściowe: Jan Kowalski 4321 Jan Nowak 1234 Piotr Biały 3214 Beata Nowicka 4132 Anna Szymoniak 2314 Dane wyjściowe: $ sort dane.txt Anna Szymoniak 2314 Beata Nowicka 4132 Jan Kowalski 4321 Jan Nowak 1234 Piotr Biały 3214 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 5 / 69

7 Komenda sort w Linux Dane wejściowe: Jan Kowalski 4321 Jan Nowak 1234 Piotr Biały 3214 Beata Nowicka 4132 Anna Szymoniak 2314 Dane wyjściowe: $ sort -k2 dane.txt Piotr Biały 3214 Jan Kowalski 4321 Jan Nowak 1234 Beata Nowicka 4132 Anna Szymoniak 2314 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 6 / 69

8 Komenda sort w Linux Dane wejściowe: Unix Linux Solaris Linux Windows Mac Unix Dane wyjściowe: $ sort -u dane.txt Linux Mac Solaris Unix Windows Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 7 / 69

9 Komenda sort w Linux Dane wejściowe: Dane wyjściowe: $ sort danenumeric.txt -n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 8 / 69

10 Komenda sort w Linux Dane wejściowe: Dane wyjściowe:$ sort -nr dane.txt Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 9 / 69

11 Komenda sort w Linux Dane wejściowe: $ cat file $ cat file Dane wyjściowe: sort może sortować wiele plików $ sort -n file1 file Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 10 / 69

12 Popularne algorytmy sortowania Sortowanie przez porównywanie elementów: Sortowanie przez selekcję (ang. selection sort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie babelkowe (ang. bubble sort) Sortowanie koktajlowe (ang. cocktail sort) Sortowanie pozycyjne (ang. radix sort) Sortowanie metoda dziel i zwyciężaj Inne Sortowanie przez scalanie (ang. merge sort) Sortowanie szybkie (ang. quick sort) Sortowanie przez zliczanie (ang. counting sort) Sortowanie przez kopcowanie (ang. heap sort) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 11 / 69

13 Sortowanie stabilne Definicja Dana metoda sortowania jest stabilna, jeśli zachowuje względna kolejność elementów ze zdublowanymi kluczami. Dane Wejściowe Sortowanie stabilne Adam 1 Adam 1 Beta 2 Wojciech 1 Cezary 3 Ireneusz 1 Wojciech 1 Beta 2 Grzegorz 2 Grzegorz 2 Piotr 3 Jerzy 2 Jerzy 2 Barbara 2 Ireneusz 1 Cezary 3 Barbara 2 Piotr 3 Waldemar 3 Waldemar 3 Kazimierz 3 Kazimierz 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 12 / 69

14 Sortowanie stabilne cd. Przykład na niestabilność: $sort -k2 dane.txt Dane Wejściowe Sortowanie niestabilne Adam 1 Adam 1 Beta 2 Ireneusz 1 Cezary 3 Wojciech 1 Wojciech 1 Barbara 2 Grzegorz 2 Beta 2 Piotr 3 Grzegorz 2 Jerzy 2 Jerzy 2 Ireneusz 1 Cezary 3 Barbara 2 Kazimierz 3 Waldemar 3 Piotr 3 Kazimierz 3 Waldemar 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 13 / 69

15 Podział algorytmów sortowania wg. stabilonści Algorytmy sortowania stabilnego: Sortowanie przez wstawianie (ang. insertion sort) Sortowanie babelkowe (ang. bubblesort) Sortowanie koktajlowe (ang. cocktail sort) Sortowanie pozycyjne (ang. radix sort) Sortowanie przez scalanie (ang. merge sort) Sortowanie przez zliczanie (ang. counting sort) części wykładu Algorytmy sortowania niestabilnego: Sortowanie przez selekcję (ang. selection sort)) Sortowanie szybkie (ang. quicksort) Sortowanie przez kopcowanie (ang. heapsort) - omówione na wykładach późniejszych Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 14 / 69

16 Sortowanie danych całkowitych - Java I import java.util.random; import java.util.arrays; import java.util.scanner; public class IntSorter { public static void generate(int[] tab, int max) { Random r = new Random(); for (int j = 0; j < tab.length; ++j) { tab[j] = r.nextint(max)-max/2; } } public static void printtab(int[] tab) { for (int el : tab) { System.out.print(el + " "); } System.out.println(""); Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 15 / 69

17 Sortowanie danych całkowitych - Java II } } public static void main(string[] args) { Scanner in = new Scanner(System.in); System.out.println("Podaj rozmiar tablicy"); int n = in.nextint(); int[] intarr = new int[n]; generate (intarr,50); printtab (intarr); Arrays.sort(intArr); printtab (intarr); } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 16 / 69

18 java IntSorter Podaj rozmiar tablicy Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 17 / 69

19 Sortowanie danych rzeczywistych - Java I import java.util.random; import java.util.arrays; import java.util.scanner; public class DoubleSorter { public static void printtab(double[] tab) { for (double el : tab) { System.out.printf("%.04f %n", el); } } public static void main(string[] args) { Scanner in = new Scanner(System.in); System.out.println("Podaj rozmiar tablicy"); Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 18 / 69

20 Sortowanie danych rzeczywistych - Java II } } int n = in.nextint(); double[] tab = new double[n]; //losowo generowana tablica Random rand = new Random(); for (int j = 0; j < tab.length; ++j) { tab[j] = rand.nextdouble()*200; } printtab (tab); Arrays.sort(tab); System.out.println("Posortowane: "); printtab (tab); Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 19 / 69

21 java DoubleSorter Podaj rozmiar tablicy 10 29, , , , , ,7103-1,6706 9, , ,2431 Posortowane: -85, , , , ,7283-1,6706 9, , , ,6439 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 20 / 69

22 Sortowanie plików - Java I Źródło: FileSorter.java import java.io.file; import java.util.arrays; import java.util.scanner; public class FileSorter { public static void main(string[] args) { File directory = new File(args[0]); if (!directory.exists()) { System.out.println(args[0] + " does not exist "); return; } if (!directory.isdirectory()) { Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 21 / 69

23 Sortowanie plików - Java II } System.out.println(args[0] + " is not a directory"); return; } File[] files = directory.listfiles(); if (files == null) { System.out.println("could not read files"); return; } Arrays.sort(files); for (int i = 0; i < files.length; i++) System.out.println(files[i].getName()); } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 22 / 69

24 java FileSorter./FileSorter./ FileSorter.class FileSorter.java Insertion.java StdIn.java StdOut.class StdOut.java babelkowe.cc binarne.cc insertsort.cc koktajlowe.cc quicksortfunction.c quicksort.c selectionsort.cc smplquicksort.cc Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 23 / 69

25 Sortowanie przez selekcję Sortowanie przez selekcję (proste wybieranie) polega na tym, że w każdym kroku znajdujemy najmniejszy (największy) element w sortowanym ciagu, po czym przenosimy ten element na odpowiednia pozycję do ciagu wynikowego (przez zamianę elementów miejscami). Metoda sortowania nazywa się przez selekcję, ponieważ działa na zasadzie ciagłego wybierania najmniejszego (największego) elementu z coraz mniejszego zbioru. Metoda sortowania jest niestabilna. 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 4 24 / 69

26 Sortowanie przez selekcję Require: tablica A o rozmiarze n {A=[0,...,n-1]} 1: for all i = 0 to n 1 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: end for 8: zamiana (A[min], A[i]); 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 jego ograniczenie górne jest w klasie O(n 2 ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 25 / 69

27 Sortowanie przez selekcję - przykład Tablica po wypełnieniu pseudolosowymi wartosciami: Kolejne kroki algorytmu (element minimalny zaznaczony na czerwono, element, z którym nastapiła zamiana zaznaczony na niebiesko): i = 0: i = 1: i = 2: i = 3: i = 4: i = 5: i = 6: i = 7: i = 8: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 26 / 69

28 Sortowanie przez selekcję - Koszt algorytmu Złożoność czasowa: Operacja dominujaca: porównywanie elementów. Złożoność czasowa: Θ(n 2 ) T (n) = n 1 + n = n (n 1) 2 = 1 2 n2 Czas sortowania niezależny od rodzaju danych wejściowych - czas pracy algorytmu jest kwadratowy, nawet jeśli wejście jest posortowane. Ruch danych jest minimalny - liniowa liczba operacji zamiany. Złożoność pamięciowa: Θ(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 27 / 69

29 Animacja Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 28 / 69

30 Sortowanie przez wstawianie Algorytm sortowania nazywa się przez wstawianie, gdyż może być stosowany do sortowania kart, np. w czasie gry w pokera. Algorytm polega na sprawdzaniu kolejnych danych i szukaniu właściwego miejsca wśród wcześniej ułożonych dla nowej danej. 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. W implementacji należy zrobić miejsce na wstawienie bieżacego elementu, przenoszac większe (mniejsze) elementy o jedno miejsce w prawo przed wstawieniem danego na wolna pozycję. Metoda sortowania jest stabilna. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 29 / 69

31 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 key < A[j] 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 4 30 / 69

32 Sortowanie przez wstawianie - Przykład Tablica po wypełnieniu pseudolosowymi wartosciami: Kolejne kroki algorytmu dla zewnętrznej pętli (ciag nieposortowany zaznaczony jest na czerwono, a element, który był rozważany w i-tym korku zaznaczony jest na niebiesko ): i = 1: i = 2: i = 3: i = 4: i = 5: i = 6: i = 7: i = 8: i = 9: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 31 / 69

33 Sortowanie przez wstawianie - Koszt algorytmu Twerdzenie 6.2 a a Robert Sedgewick. Algorytmy w C++. Addison Wesley, Wydanie I, str. 252, W średnim przypadku sortowanie przez wstawianie wymaga N 2 /4 porównań i N 2 /4 przestawień dla losowo uporzadkowanej tablicy o długości N i niepowtarzalnych kluczach. W najgorszym przypadku sortowanie przez wstawianie wymaga N 2 /2 porównań i N 2 /2 przestawień. X T S R P O M L E E A W najlepszym przypadku sortowanie przez wstawianie wymaga N 1 porównań i 0 przestawień. A E E L M O P R S T X Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 32 / 69

34 Sortowanie przez wstawianie - Inwersja Inwersja Inwersja to para elementów tablicy uporzadkowanych w niewłaściwy sposób. Przykładowo w ciagu: A E E L M O T R X P S mamy 6 inversji: T R, T P T S, R P, X P, X S. W ciagu: E X A M P L E mamy 11 inversji: E A, X A, X M, X P, X L, X E, M L, M E, P L, P E i L E. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 33 / 69

35 Sortowanie przez wstawianie - częściowo posortowane tablice Tablica częściowo posortowana Tablica o rozmiarze N jest częściowo posortowana, jeśli liczba inwersji w tablicy jest mniejsza niż pewna stała wielokrotność jej wielkości, tj. liczba inwersji w tablicy jest c N. Przykłady częściowo posortowanych tablic: Tablica, w której każdy element znajduje się blisko ostatecznej pozycji. Krótka tablica dołaczona do długiej posortowanej tablicy. Tablica, w której mała liczba elementów znajduje się nie na właściwej pozycji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 34 / 69

36 Sortowanie przez wstawianie - uwagi Czas wykonania sortowania przez wstawianie zależy od poczatkowego układu elementów w danych wejściowych. Sortowanie przez wstawianie zastosowane dla posortowanej tablicy stwierdzi natychmiastowo, że każdy element znajduje się we właściwym miejscu tablicy, a łaczny czas wykonania rośnie liniowo - czas wykonania sortowania przez wybieranie dla takich tablic jest kwadratowy. Sortowanie przez wstawianie (w odróżnieniu od sortowania przez wybieranie) jest wydajna metoda dla tablic częściowo posortowanych, a mianowicie algorytm sortowania przez wstawianie działa w czasie liniowym, a liczba przestawień jest równa liczbie inwersji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 35 / 69

37 Sortowanie babelkowe Sortowanie babelkowe polega na zamienianiu miejscami kolejnych dwóch sasiaduj acych elementow tak długo, aż uzyska się uporzadkowany zbiór. Sortowanie babelkowe jest wykonywane w n 1 przebiegach. zewnetrznej pętli. W i-tym przebiegu wyznaczany jest i-ty najmniejszy/największy element zbioru oraz umieszczany jest na właściwej pozycji. Załóżmy, że zbiór przemierzamy od strony prawej do lewej, czyli od końca. Jeżeli w pierwszym przebiegu trafimy na najmniejszy (największy) element zbioru, zamieniamy go kolejno z elementami leżacymi po jego lewej stronie, aż trafi on na pierwsza pozycję w zbiorze. Jeżeli w drugim przebiegu trafimy na drugi najmniejszy (największy) element zbioru, zamieniamy go kolejno z elementami leżacymi po jego lewej stronie, aż trafi on na druga pozycję w zbiorze. itd. Metoda sortowania jest stabilna. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 36 / 69

38 Sortowanie babelkowe Require: tablica A o rozmiarze n {A=[0,...,n-1]} 1: for all i = 0 to n 1 do 2: for all j = n 1 downto j > i do 3: if A[j] < A[j 1] then 4: Zamiana(A[j 1], A[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 4 37 / 69

39 Sortowanie babelkowe - Przykład I Tablica po wypełnieniu pseudolosowymi wartościami: Kolejne kroki algorytmu - elementy wymagajace zamiany zaznaczone sa na czerwono, a element, które sa porównywane ale nie wymagaja zamiany zaznaczone sa na niebiesko: Iteracja i= 0 j = 4, , -5 < 16 - ok j = 3, , 12 > -5 - swap j = 2, , 1 > -5 - swap j = 1, , 5 > -5 - swap Iteracja i= 1 j = 4, , 12 < 16, ok j = 3, , 1 < 12, ok j = 2, , 5 > 1 - swap Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 38 / 69

40 Sortowanie babelkowe - Przykład II Iteracja i= 2 j = 4, , 12 < 16, ok j = 3, , 5 < 12, ok Iteracja i= 3 j = 4, , 12 < 16, ok Iteracja i= 4 Tablica po sortowaniu: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 39 / 69

41 Wejście: , Rozmiar tablicy: 5 Iteracja i= 0 j = 4, >1 - swap j = 3, >1 - swap j = 2, >1 - swap j = 1, >1 - swap Iteracja i= 1 j = 4, <5 - ok j = 3, <4 - ok j = 2, <3 - ok Iteracja i= 2 j = 4, <5 - ok j = 3, <4 - ok Iteracja i= 3 j = 4, <5 - ok Iteracja i= 4 Tablica po sortowaniu: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 40 / 69

42 Wejście: , Rozmiar tablicy: 6 I Iteracja i= 0 j = 5, <5 - ok j = 4, <4 - ok j = 3, <3 - ok j = 2, <2 - ok j = 1, >1 - swap Iteracja i= 1 j = 5, <5 - ok j = 4, <4 - ok j = 3, <3 - ok j = 2, >2 - swap Iteracja i= 2 j = 5, <5 - ok j = 4, <4 - ok j = 3, >3 - swap Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 41 / 69

43 Wejście: , Rozmiar tablicy: 6 II Iteracja i= 3 j = 5, <5 - ok j = 4, >4 - swap Iteracja i= 4 j = 5, >5 - swap Iteracja i= 5 Wyjście: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 42 / 69

44 Sortowanie babelkowe 2 Zmodyfikowany algorytm sortowania babelkowego, którego wykonywanie kończy się z chwila stwierdzenia, że dany zbiór jest już posortowany. Require: tablica A o rozmiarze n {A=[0],...,A[n-1]} 1: zam = true; 2: i = 0; 3: while zam do 4: zam = false; 5: i = i + 1; 6: for j = 0 to j < n i do 7: if A[j] > A[j + 1] then 8: Zamiana(A[j], A[j + 1]); 9: zam = true; 10: end if 11: end for 12: end while Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 43 / 69

45 Wejście: , Rozmiar tablicy: 6 iteracja i= 0 j = 0, >1 - swap j = 1, >2 - swap j = 2, >3 - swap j = 3, >4 - swap j = 4, >5 - swap iteracja i= 1 j = 0, <2 - ok j = 1, <3 - ok j = 2, <4 - ok j = 3, <5 - ok Wyjście: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 44 / 69

46 Wejście: , Rozmiar tablicy: 5 iteracja i= 0 j = 0, <3 - ok j = 1, <4 - ok j = 2, <5 - ok j = 3, >1 - swap iteracja i= 1 j = 0, <3 - ok j = 1, <4 - ok j = 2, >1 - swap iteracja i= 2 j = 0, <3 - ok j = 1, >1 - swap iteracja i= 3 j = 0, >1 - swap iteracja i= 4 Wyjście: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 45 / 69

47 Sortowanie babelkowe - Koszt algorytmu Twerdzenie 6.3 a a Robert Sedgewick. Algorytmy w C++. Addison Wesley, Wydanie I, str. 252, W średnim i najgorszym przypadku sortowanie babelkowe wymaga N 2 /2 porównań i N 2 /2 przestawień dla losowo uporzadkowanej tablicy o długości N. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 46 / 69

48 Sortowanie koktajlowe Sortowanie koktajlowe - znane także jako dwukierunkowe sortowanie babelkowe, sortowanie przez wstrzasanie (ang. cocktail sort, bidirectional bubble sort, shaker sort). Sortowanie koktajlowe jest wersja sortowania babelkowego w którym prześcia przez dane odbywaja się na przemian: raz z lewa na prawo, raz z prawa na lewo. Sortowanie koktajlowe wykorzystuje następujace własności: Każdy obieg wewnętrznej pętli sortujacej umieszcza na właściwym miejscu element najmniejszy, a elementy większe przesuwa o 1 pozycje w kierunku końca zbioru. Jeśli pętla wewnętrzn zostanie wykonana w kierunku odwrotnym, to wtedy największy element znajdzie się na swoim właściwym miejscu, a elementy mniejsze przesuna się o jedna pozycję w kierunku poczatku zbioru. Łaczac te dwie pętle, sortujac wewnętrznie naprzemiennie w kierunku normalnym i odwrotnym, otrzymujemy algorytm sortowania koktajlowego. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 47 / 69

49 Sortowanie koktajlowe vs babelkowe: A= {2,3,4,5,1} Sortowanie koktajlowe - wymaga tylko dwa przejścia, aby posortować ciag 2,3,4,5,1 iteracja i1 top --> down i = 4, , 5>1 - swap i = 3, , 4>1 - swap i = 2, , 3>1 - swap i = 1, , 2>1 - swap iteracja i2 down --> top i = 1, , 1<2 - ok i = 2, , 2<3 - ok i = 3, , 3<4 - ok Wyjście: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 48 / 69

50 Sortowanie koktajlowe vs babelkowe: A= {2,3,4,5,1} Sortowanie babelkowe - wymaga cztery przejścia, aby posortować ciag 2,3,4,5,1 Iteracja i= 0 j = 4, >1 - swap j = 3, >1 - swap j = 2, >1 - swap j = 1, >1 - swap Iteracja i= 1 j = 4, <5 - ok j = 3, <4 - ok j = 2, <3 - ok Iteracja i= 2 j = 4, <5 - ok j = 3, <4 - ok Iteracja i= 3 j = 4, <5 - ok Iteracja i= 4 Wyjście: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 49 / 69

51 Sortowanie koktajlowe Algorytm: ShakerSort tablica A o rozmiarze n {A=[0,...,n-1]} 1: bottom = 0; top = n - 1; 2: bool zamiana = true; 3: while zamiana do 4: zamiana = false; 5: for all i = top to i > bottom do 6: if A[i] < A[i 1] then 7: zamien(a[i], A[i 1]); 8: zamiana = true; i = i 1; 9: end if 10: end for 11: zamiana = false; bottom = bottom + 1; 12: for all i = bottom to i < top do 13: if A[i] > A[i + 1] then 14: zamien(a[i], A[i + 1]); 15: zamiana = true; i = i + 1; 16: end if 17: end for 18: top = top 1; 19: end while Twierdzenie W średnim i najgorszym przypadku sortowanie koktajlowe wymaga N 2 /2 porównań i N 2 /2 przestawień dla losowo uporzadkowanej tablicy o długości N. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 50 / 69

52 Metoda dziel i zwyciężaj Idea Metoda dziel i zwyciężaj (ang. divide and conquer) jest metoda projektowania algorytmów, w której dany problem jest dzielony na kilka mniejszych podproblemów podobnych do poczatkowego problemu. Problemy te sa rozwiazywane rekurencyjnie, a następnie rozwiazania wszystkich podproblemów sa łaczone w celu utworzenia rozwiazania całego problemu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 51 / 69

53 Metoda dziel i zwyciężaj W podejściu dziel i zwyciężaj każdy poziom rekursji składa się z następujacych trzech etapów: Dziel: Dzielimy problem na podproblemy. Zwyciężaj: Rozwiazujemy podproblemy rekurencyjnie, chyba że sa one małego rozmiaru i już nie wymagaja zastosowania rekursji - używamy wtedy bezpośrednich metod. Połacz: Łaczymy rozwiazania podproblemów, aby otrzymać rozwiazanie całego problemu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 52 / 69

54 Dziel i Zwyciężaj - przykłady zastosowań Znajdowanie największego i najmniejszego elementu zbioru. Wyszukiwanie binarne Potęgowanie liczb Sortowanie szybkie Sortowanie przez scalanie Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 53 / 69

55 Element minimalny i maksymalny zbioru Definicja problemu: Dane: n - liczba elementów zbioru a 1, a 2, a 3,..., a n - ciag elementów Szukane: Elementy największy (maksymalny) i najmniejszy (minimalny) zbioru, (w skrócie, elementy min i max zbioru). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 54 / 69

56 Elementy min i max zbioru - podejście siłowe Dane: Tablica A o rozmiarze n, tj.a= A[0],...,A[n-1] Algorytm: MIN 1: min = A[0]; 2: for i = 1 to n 1 do 3: if min > A[i] then 4: min = A[i]; 5: end if 6: end for 7: return min; Algorytm: MAX 1: max = A[0]; 2: for i = 1 to n 1 do 3: if max < A[i] then 4: max = A[i]; 5: end if 6: end for 7: return max; Naiwne rozwiazanie problemu: Najpierw wyszukujemy element największy metoda bezpośrednia, a potem element najmniejszy. Złożoność obliczeniowa: 2 n Algorytm MAX : n - 1 operacji porównania Algorytm MIN : n - 1 operacji porównania Razem MAX i MIN : 2n - 2 operacji porównania Przykład, zbiór 9-elementowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Liczba porównań: 16 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 55 / 69

57 Element min i max zbioru - metoda dziel i zwyciężaj Wykorzystujemy następujac a własność zbiorów skończonych: W każdym zbiorze skończonym zawsze znajduje się element największy i element najmniejszy. Znajdujemy kandydatów na Min i Max - takie wyszukanie realizowane jest poprzez porównywanie elementów parami. Stosujemy algorytmy MIN i MAX na odpowiednim zbiorze kandydatów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 56 / 69

58 Element min i max zbioru - metoda dziel i zwyciężaj Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 57 / 69

59 Element min i max zbioru - metoda dziel i zwyciężaj Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 57 / 69

60 Element min i max zbioru - metoda dziel i zwyciężaj Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 57 / 69

61 Element min i max zbioru - metoda dziel i zwyciężaj Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Kandydaci na MAX: 5, 3, 9, 5, 4. Na tym zbiorze stosowany jest algorytm MAX. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 57 / 69

62 Element min i max zbioru - metoda dziel i zwyciężaj Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Kandydaci na MAX: 5, 3, 9, 5, 4. Na tym zbiorze stosowany jest algorytm MAX. Ostatni - nieparzysty element został dodany do obu zbiorów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 57 / 69

63 Element min i max zbioru - metoda dziel i zwyciężaj Szacowanie: Przy rozdzielaniu elementów wykonano 4 porównania. Algorytm MIN na zbiorze {2, 1, 8, 1, 4} wykonał 4 porównania i zwrócił wartość 1. Algorytm MAX na zbiorze {5, 3, 9, 5, 4} wykonał 4 porównania i zwrócił wartość 9. W sumie wykonano = 12 porównań, co oznacza 25% wzrost wydajności w porównaniu z podejściem naiwnym (tam potrzebnych było 16 porównań)! Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 58 / 69

64 Element min i max zbioru - metoda dziel i zwyciężaj Dane: tablica A o rozmiarze n, tj. A = A[0],..., A[n 1] Algorytm: MIN-MAX 1: min = 0; max = 0; 2: for i = 0 to n 2 do 3: if A[i] < A[i + 1] then 4: if A[i] < A[min] then 5: min = i; 6: end if 7: if A[i + 1] > A[max] then 8: max = i + 1; 9: end if 10: else 11: if A[i + 1] < A[min] then 12: min = i + 1; 13: end if 14: if A[i] > A[max] then 15: max = i; 16: end if 17: end if 18: i = i + 2; 19: end for 20: if n is odd then 21: if A[n 1] < A[min] then 22: min = n 1; 23: end if 24: if A[n 1] > A[max] then 25: max = n 1; 26: end if 27: end if 28: return A[min] and A[max]; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 59 / 69

65 Dziel i Zwyciężaj - przykłady zastosowań Znajdowanie największego i najmniejszego elementu zbioru Wyszukiwanie binarne Potęgowanie liczb Sortowanie szybkie Sortowanie przez scalanie Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 60 / 69

66 Wyszukiwanie binarne Problem: Dany jest posortowany zbiór danych (np. w tablicy) Arr oraz pewien element key. Należy odpowiedzieć na pytanie czy klucz key znajduje się w tablicy Arr. Algorytm: Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Jeśli środkowy element jest większy niż key, to szukaj elementu key w lewej części tablicy. Jeśli środkowy element jest mniejszy niż key, to szukaj elementu key w prawej części tablicy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 61 / 69

67 Wyszukiwanie binarne Przykład: Znaleźć liczbę 9 w ciagu: 3, 5, 7, 8, 9, 12, Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 62 / 69

68 Wyszukiwanie binarne Algorytm bisekcji (A,n,key): 1: i = 0; j = n 1; 2: while (i j) do 3: mid = i + (j i)/2; 4: if key < A[mid] then 5: j = mid 1; 6: else 7: if key > A[mid] then 8: i = mid + 1; 9: else 10: return mid; 11: end if 12: end if 13: end while 14: return 1; Złożoność algorytmu: Θ(log 2 (n)). Uzasadnienie - patrz wykład 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 63 / 69

69 Wyszukiwanie binarne - algorytm rekurencyjny Algorytm bisekcja2 (A,left, right, key): 1: if left > right then 2: return 1; 3: end if 4: curr = left + (right left)/2; 5: if key < a[curr] then 6: bisekcja2(a, left, curr 1, key); 7: else 8: if key > a[curr] then 9: bisekcja2(a, curr + 1, right, key); 10: else 11: return curr; 12: end if 13: end if Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 64 / 69

70 Twierdzenie 1 Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów, Roz. 4 (str. 73) T (n) = a T (n/b) + f (n) n - rozmiar problemu; rozmiar danych wejściowych. a - liczba podproblemów w rekurencji. n/b - rozmiar każdego podproblemu; w zasadzie zakłada się, że wszystkie podproblemy sa tego samego rozmiaru. f(n) - koszt operacji poza rekurencyjnym wywołaniem zawierajacy koszt podziału probelmu na podproblemy i koszt operacji scalenia rozwiazań. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 65 / 69

71 Wyszukiwanie binarne - złożoność rozmiar danych wejściowych: n liczba podproblemów w rekurencji: a = 1 rozmiar podproblemu (połowa danych) n/b = n/2 koszt operacji poza rekurencyjnych (sprawdzenie elementu środkowego, połaczenie wyniku): Θ(1) co implikuje: T (n) = T (n/2) + 1 T (n) = Θ(log 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 66 / 69

72 Dziel i Zwyciężaj - przykłady zastosowań Znajdowanie największego i najmniejszego elementu zbioru. Wyszukiwanie binarne Potęgowanie liczb Sortowanie szybkie Sortowanie przez scalanie Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 67 / 69

73 Potęgowanie liczby Problem: Oblicz a n, dla n N. Algorytm naiwny: a n = a a... a }{{} n Złożoność: Θ(n) Algorytm dziel i zwyciężaj: { a n a n/2 a = n/2, gdy n jest parzyste a n 1/2 a n 1/2 a, gdy n jest nieparzyste Złożoność: T (n) = T (n/2) + Θ(1) θ(log 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 68 / 69

74 Dziel i Zwyciężaj - przykłady zastosowań Znajdowanie największego i najmniejszego elementu zbioru. Wyszukiwanie binarne Potęgowanie liczb Sortowanie szybkie - Następny wykład Sortowanie przez scalanie Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 4 69 / 69

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

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. 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

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

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

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

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

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

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

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

Bardziej szczegółowo

Podstawy Informatyki

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

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

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

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

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

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

Algorytmy sortujące i wyszukujące

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

Bardziej szczegółowo

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

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

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

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

Bardziej szczegółowo

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

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

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

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

Efektywna metoda sortowania sortowanie przez scalanie

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

Bardziej szczegółowo

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

Wybrane algorytmy tablicowe

Wybrane algorytmy tablicowe Wybrane algorytmy tablicowe Algorytmy i struktury danych Wykład 2. Rok akademicki: 2009/2010 Sortowanie przez wybieranie for (int i = 0; i < liczby.length - 1; i++) k = i; for (int j = i; j < liczby.length;

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Problemy porządkowe zadania

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

Algorytmy i struktury danych

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

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

Metodyki i Techniki Programowania 2

Metodyki i Techniki Programowania 2 Metodyki i Techniki Programowania 2 zajęcia nr 5 algorytmy cz.1: sortowanie Elektronika i Telekomunikacja, semestr III rok akademicki 2009/2010 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Sortowanie

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

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

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

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

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

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

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

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

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

Bardziej szczegółowo

Podstawy Programowania 1 Sortowanie tablic jednowymiarowych. Plan. Sortowanie. Sortowanie Rodzaje sortowania. Notatki. Notatki. Notatki.

Podstawy Programowania 1 Sortowanie tablic jednowymiarowych. Plan. Sortowanie. Sortowanie Rodzaje sortowania. Notatki. Notatki. Notatki. Podstawy Programowania 1 Sortowanie tablic jednowymiarowych Arkadiusz Chrobot Zakład Informatyki 12 listopada 20 1 / 35 Plan Sortowanie Wartość minimalna i maksymalna w posortowanej tablicy Zakończenie

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

[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

Informatyka A. Algorytmy

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

Bardziej szczegółowo

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

ALGORYTMY I STRUKTURY DANYCH

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

Bardziej szczegółowo

Algorytmy i Struktury Danych. (c) Marcin Sydow. 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. (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

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych 2. Tablice Tablica to struktura danych przechowująca elementy jednego typu (jednorodna). Dostęp do poszczególnych elementów składowych jest możliwy za pomocą indeksów. Rozróżniamy następujące typy tablic:

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

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

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

Jeszcze o algorytmach

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

Bardziej szczegółowo

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

Luty 2001 Algorytmy (4) 2000/2001

Luty 2001 Algorytmy (4) 2000/2001 Mając dany zbiór elementów, chcemy znaleźć w nim element największy (maksimum), bądź najmniejszy (minimum). We wszystkich naturalnych metodach znajdywania najmniejszego i największego elementu obecne jest

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort Sortowanie bąbelkowe - wersja nr 1 Bubble Sort Algorytm Algorytm sortowania bąbelkowego jest jednym z najstarszych algorytmów sortujących. Można go potraktować jako ulepszenie opisanego w poprzednim rozdziale

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

. Podstawy Programowania 1. Sortowanie tablic jednowymiarowych. Arkadiusz Chrobot. 16 listopada 2016

. Podstawy Programowania 1. Sortowanie tablic jednowymiarowych. Arkadiusz Chrobot. 16 listopada 2016 Podstawy Programowania 1 Sortowanie tablic jednowymiarowych Arkadiusz Chrobot Zakład Informatyki listopada 20 1 / 35 Plan 1 Sortowanie 2 Sortowanie przez wybór 3 Sortowanie przez wstawianie Sortowanie

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

Algorytmy sortujące 1

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

Bardziej szczegółowo

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

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

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany. Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często

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

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

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

5. Podstawowe algorytmy i ich cechy.

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

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

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

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

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

Bardziej szczegółowo

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void

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

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

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

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

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

Temat 7. Najlżejsze i najcięższe algorytmy sortowania

Temat 7. Najlżejsze i najcięższe algorytmy sortowania Temat 7 Najlżejsze i najcięższe algorytmy sortowania Streszczenie Komputery są często używane porządkowania różnych danych, na przykład nazwisk (w porządku alfabetycznym), terminów spotkań lub e-maili

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

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

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Danuta Szeliga AGH Kraków Spis treści I 1 Wstęp 2 Metody proste Sortowanie bąbelkowe Sortowanie przez wstawianie Sortowanie przez selekcję Sortowanie

Bardziej szczegółowo

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

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

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/34 PRiR Algorytm Kunga Dany jest odcinek [a,b] i ciągła funkcja

Bardziej szczegółowo

Sortowanie. LABORKA Piotr Ciskowski

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

Bardziej szczegółowo