Pojęcia podstawowe. Złożonośd czasowa algorytmów. Rekurencja
|
|
- Michalina Nawrocka
- 8 lat temu
- Przeglądów:
Transkrypt
1 Pojęcia podstawowe. Złożonośd czasowa algorytmów. Rekurencja Algorytmy i struktury danych Wykład 1. Rok akademicki: 2010/2011 Ramowy plan wykładów Pojęcie podstawowe. Poprawnośd i złożonośd algorytmów Rekurencja Algorytmy tablicowe Zbiory Tablice asocjacyjne Struktury listowe Drzewa Grafy 2 1
2 Literatura Cormen T., Leiserson C., Rivest R., Stein C., Wprowadzenie do algorytmów, Wydawnictwo Naukowo-Techniczne, 2004 Lafore R., Java. Algorytmy i struktury danych, Helion, 2004 Koffman E., Wolfgang P., Struktury danych i techniki obiektowe na przykładzie Javy 5.0, Helion, 2006 Wirth N., Algorytmy + struktury danych = programy, dowolne wydanie Sysło M., Algorytmy, Wydawnictwo Szkolne i Pedagogiczne, Warszawa, Informacje organizacyjne Wymiar godzinowy: Terminy zajęd: sroda, 13.05, s. 441 Budynek BG Egzamin: pisemny (nie ma zwolnieo z egzaminu) Materiały do wykładu: 4 2
3 Algorytm sposób postępowania umożliwiający rozwiązanie zadania określonego typu podany w postaci zestawu kolejnych czynności do wykonania wykonawcą algorytmu może byd człowiek lub urządzenie (np. komputer) 5 Struktura danych Zestaw powiązanych ze sobą danych wraz z mechanizmami określającymi sposób tworzenia, likwidowania i wykorzystania zdefiniowanego zestawu jako całości oraz poszczególnych jego elementów. 6 3
4 Program komputerowy zrozumiały dla komputera sposób zapisu algorytmu i opisu struktur danych zapisywany przy użyciu języków programowania. 7 Ewolucja metod programowania (1) Programowanie w języku maszynowym Programista posługuje się pojęciami charakterystycznymi dla systemu komputerowego, a nie dla dziedziny zastosowao (operuje rozkazami wchodzącymi w skład listy rozkazów procesora) Rozkazy składające się na program programista zapisu w postaci binarnych kodów Programista operuje bezpośrednio na komórkach pamięci operacyjnej. Odpowiedzialny jest za określenie sposobu binarnej reprezentacji informacji. 8 4
5 Ewolucja metod programowania (2) Programowanie w języku symbolicznym (asemblerze) Programista posługuje się rozkazami pochodzącymi z listy rozkazów procesora (ale są one zapisywane w postaci instrukcji, a nie w postaci binarnych kodów). Języki symboliczne wprowadziły zmiany w sposobie notacji programu, ale nie spowodowały zasadniczych zmian w zestawie pojęd wykorzystywanych do opisu algorytmów. Pojawiła się możliwośd przypisywania nazw komórkom pamięci (definiowanie zmiennych) 9 Ewolucja metod programowania (3) Programowanie w językach wysokiego poziomu I generacji Pojawiła się możliwośd stosowania instrukcji: podstawienia (przypisania), warunkowej, pętli (iteracji), skoku. Przy opisie algorytmy następuje rezygnacja ze stosowania rozkazów z listy rozkazów procesora i pojawia się możliwośd stosowania pojęd o znacznie większym stopniu ogólności. Wprowadzenie mechanizmu deklarowania zmiennych Ułatwione zostało operowanie na wartościach tekstowych Pojawiła się możliwośd korzystania ze złożonych typów danych (tablice, pliki) 10 5
6 Ewolucja metod programowania (4) Programowanie proceduralne Możliwośd definiowania podprogramów. Zdefiniowanie nowego podprogramu pozwala na rozszerzenie zbioru instrukcji dostępnych w stosowanym języku programowania. Mechanizm parametrów zwiększył uniwersalnośd definiowanych instrukcji. Pojawiła się możliwośd definiowania danych lokalnych (dostępnych tylko w podprogramie) oraz danych globalnych (dostępnych w całym programie) 11 Ewolucja metod programowania (5) Programowanie strukturalne Zwiększenie liczby instrukcji sterujących (np.: różne postaci pętli, instrukcji warunkowych, wyboru, podstawienia) dzięki czemu można było wyeliminowad instrukcję skoku bezwarunkowego Podział programu na dwie części: opis struktur danych i opis algorytmu Zwiększenie liczby dostępnych typów danych (tablice, rekordy, zbiory, pliki), Możliwośd stosowania dynamicznych struktur danych (stos, kolejka, listy, drzewa), Możliwośd definiowania własnych struktur danych. 12 6
7 Ewolucja metod programowania (6) Programowanie obiektowe Równoległe definiowanie algorytmów i struktur danych i ich połączenie w jedną całośd (klasę): reprezentuje w programie fragment rzeczywistości (jego cechy, jego zachowania), pozwala programiście posługiwad się pojęciami charakterystycznymi dla dziedziny problemu (oderwad się od pojęd związanych ze sprzętem komputerowym), pozwala ukryd szczegóły implementacji klasa abstrakcyjny typ danych (ABSTRAHOWANIE - operacja myślowa polegająca na uwzględnianiu tylko wybranych cech sytuacji (przedmiotu, osoby), z pominięciem cech uznanych za nieistotne) 13 Wymagania wobec algorytmów poprawnośd algorytm generuje prawidłowe rezultaty (nie zawiera błędów), wydajnośd realizacja algorytmu wymaga użycia akceptowalnej ilości zasobów: czasu, pamięci. 14 7
8 Pojęcie błędu niezgodnośd z obowiązującymi regułami pisania, liczenia, wymowy itp.; odstępstwo od normy; pomyłka postępek, działanie, które przynosi komuś złe skutki; niewłaściwe posunięcie, przedsięwzięcie mylne, fałszywe mniemanie o czymś (przestarz.) Źródło: Słownik języka polskiego PWN 15 Błędy w programowaniu błędy logiczne na etapie projektowania algorytmu (środki zaradcze: stosowanie sprawdzonych algorytmów, formalne dowodzenie poprawności algorytmu, testowanie programu) błędy wykonania programu ujawniające się w trakcie realizacji algorytmu zapisanego w postaci programu (ujawniające się w postaci wyjątków) błędy syntaktyczne polegające na niezgodności tekstu programu z gramatyką języka programowania (wykrywane przez kompilator) 16 8
9 Złożonośd obliczeniowa Złożonośd obliczeniowa algorytmu ilośd zasobów systemu komputerowego niezbędnych do jego realizacji. Zasoby systemu komputerowego niezbędne do realizacji algorytmu: czas pracy procesora (złożonośd czasowa algorytmu), pamięd operacyjna (złożonośd pamięciowa algorytmu). Złożonośd obliczeniowa jest uzależniona od wielkości zadania. 17 Sortowania przez wybieranie (1) import java.io.*; public class SortowaniePrzezWybieranie { static void sortuj(int [] liczby) { int k, pomoc; for (int i = 0; i < liczby.length - 1; i++) { k = i; for (int j = i; j < liczby.length; j++) if (liczby[k] > liczby[j]) k = j; pomoc = liczby[i]; liczby[i] = liczby[k]; liczby[k] = pomoc; 18 9
10 Sortowania przez wybieranie (2) static int czytajliczbe() throws IOException { BufferedReader klaw = new BufferedReader (new InputStreamReader (System.in)); return Integer.parseInt(klaw.readLine()); static void drukujwektor(int [] tab) { for (int i = 0; i < tab.length; i++) System.out.print(tab[i] + " "); System.out.print("\n"); 19 Sortowania przez wybieranie (3) public static void main(string [] args) throws IOException { System.out.print("Liczba elementow w wektorze: "); int n = czytajliczbe(); int [] wektor = new int[n]; for (int i = 0; i < wektor.length; i++) wektor[i] = (int) (100 * Math.random()); long czas1, czas2; czas1 = System.currentTimeMillis(); // czas w milisekundach, jaki upłynął od // 1 stycznia 1970 roku, godz. 0:00 sortuj(wektor); czas2 = System.currentTimeMillis(); System.out.println("Czas realizacji obliczen: " + (czas2 - czas1)); 20 10
11 Sortowania przez wybieranie (4) Rezultat działania programu: Liczba elementow w wektorze: Czas realizacji obliczen: Czas realizacji algorytmu (1) 22 11
12 Czas realizacji algorytmu (2) Czas (milisekundy) y = 0, n 2 0,0094 n + 286,41 23 Oszacowanie czasu realizacji algorytmu (1) 24 12
13 Oszacowanie czasu realizacji algorytmu (2) Analiza powyższych danych pozwala stwierdzid, że czas obliczeo uzależniony jest przede wszystkim od składnika: 0, n 2 Składnik ten nazywany jest składnikiem dominującym. Po pominięciu stałych współczynników można stwierdzid, że zależnośd pomiędzy czasem wykonania a wielkością zadania ma charakter funkcji kwadratowej. Kwadratowy charakter zależności uwidacznia się w coraz większym stopniu wraz ze wzrostem wielkości zadania. 25 Cechy empirycznego określania złożoności Zalety: otrzymane czasy obliczeo są proste w interpretacji Wady: koniecznośd wielokrotnego uruchamiania programu (dla złożonych algorytmów może to byd bardzo czasochłonne), uzyskane wyniki dotyczą zastosowanego w obliczeniach zestawu danych (trudno jest określid czas realizacji dla przypadku najlepszego, najgorszego oraz przeciętnego ), wyniki dotyczą zwykle stosunkowo niewielkich zbiorów danych nie wiadomo, czy dla zbiorów o większym rozmiarze charakter zależności się nie zmieni, czas jest uzależniony od szybkości i architektury komputera, języka programowanie, techniki translacji, systemu operacyjnego trudna porównywalnośd wyników z uwagi na wielozadaniowy charakter systemów operacyjnych trudno jest określid, jaka częśd czasu była rzeczywiście przeznaczona na realizację analizowanego programu
14 Bezpośrednia analiza algorytmów Analiza dotyczy: charakteru zależności (np. zależnośd liniowa lub kwadratowa), a nie jej dokładnej postaci (wzór funkcji) uwzględniany jest element dominujący, pomijane są współczynniki stałe górnego i dolnego ograniczenia czasu realizacji algorytmu (a nie czasu realizacji algorytmu) górne ograniczenie czas realizacji algorytmu jest nie większy niż... (ale może byd krótszy) przypadek pesymistyczny, dolne ograniczenie czas realizacji algorytmu jest nie mniejszy niż... (ale może byd dłuższy) przypadek optymistyczny, zachowania się algorytmu dla zbiorów danych o dużej wielkości (czyli dla wszystkich n większych od pewnej wartości n 0 ) 27 Górne ograniczenie czasu realizacji algorytmu (1) f(n) czas realizacji algorytmu (zależny od n) f(n) zależy od wielu czynników i podanie dokładnego charakteru zależności jest trudne łatwiej jest zdefiniowad ograniczenie górne dla f(n). c g(n) f(n) n 28 14
15 Górne ograniczenie czasu realizacji algorytmu (2) Czas realizacji algorytmu jest rzędu co najwyżej g(n), jeśli istnieją stała rzeczywista c > 0 i stała naturalna n 0 takie, że nierównośd f(n) c g(n) zachodzi dla każdego n n 0. Zbiór wszystkich funkcji f(n) spełniających powyższe ograniczenie określany jest jako O(g(n)). O(g(n)) = {f(n): istnieją dodatnie stałe c oraz n 0 takie, że 0 f(n) c g(n) dla wszystkich n n 0 29 Górne ograniczenie czasu realizacji algorytmu (3) Stwierdzenie: czas realizacji algorytmu wynosi O(g(n)) lub czas realizacji algorytmu jest rzędu co najwyżej g(n) lub algorytm jest klasy O(g(n)) oznacza: że istnieje taka stała c, że dla n n 0 czas realizacji algorytmu wynosi co najwyżej c g(n)
16 Dolne ograniczenie czasu realizacji algorytmu (4) Czas realizacji algorytmu jest rzędu co najmniej g(n), jeśli istnieją stała rzeczywista c > 0 i stała naturalna n 0 takie, że nierównośd f(n) c g(n) zachodzi dla każdego n n 0. Zbiór wszystkich funkcji spełniających to ograniczenie określany jest jako Ω(g(n)) Ω(g(n)) = {f(n): istnieją dodatnie stałe c i n 0 takie, że 0 cg(n) f(n) dla wszystkich n n 0 f(n) c g(n) n 31 Dolne i górne ograniczenie czasu realizacji algorytmu (1) Czas realizacji algorytmu jest dokładnie rzędu g(n) jeśli istnieją stała rzeczywista c 1 > 0, c 2 > 0 i stała naturalna n 0 takie, że nierównośd c 1 g(n) f(n) c 2 g(n) zachodzi dla każdego n n 0. c 2 g(n) f(n) c 1 g(n) n 32 16
17 Dolne i górne ograniczenie czasu realizacji algorytmu (2) Zbiór wszystkich funkcji spełniających to ograniczenie określany jest jako Θ(g(n)) Θ(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 33 Średnia złożonośd obliczeniowa Średnia złożonośd czasowa uwzględnia prawdopodobieostwa pojawienia się każdego możliwego zestawu danych wejściowych Z i (n) i-ty możliwy zestaw danych n-elementowy p i prawdopodobieostwo wystąpienia i-tego zestawu T i (n) złożonośd czasowa algorytmu dla i-tego zestawu danych Średnia złożonośd czasowa algorytmu dana jest formułą: T śr n i p T i i n 34 17
18 Złożonośd obliczenia sortowania przez wybieranie (1) static void sortuj(int [] liczby) { int k, pomoc; for (int i = 0; i < liczby.length - 1; i++) { //koszt K1 k = i; for (int j = i; j < liczby.length; j++) //koszt K2 if (liczby[k] > liczby[j]) k = j; //koszt K3 pomoc = liczby[i]; liczby[i] = liczby[k]; liczby[k] = pomoc; 35 Złożonośd obliczenia sortowania przez wybieranie (2) for (int i = 0; i < n - 1; i++) { K1 for (int j = i; j < n; j++) { K2 K
19 Złożonośd obliczenia sortowania przez wybieranie (3) for (int i = 0; i < n - 1; i++) { K1 (n 1) * K2 K3 37 Złożonośd obliczenia sortowania przez wybieranie (4) (n 1) * K1 + (n 1) [n * K2 + (n-1) * K * K2] + (n 1) * K3 = = n * K1 K1 + *½ * (2 + n) * (n 1) * K2] + n * K3 K3 = = n * K1 K1 + n * K2 K2 + ½ * n 2 * K2 ½ * n * K2 + n * K3 K3 = = ½ * K2 * n 2 + (K1 + ½ * K2 + K3) * n (K1 + K2 + K3) = O(n 2 ) 38 19
20 Rodzaje złożoności (1) Złożoność logarytmiczna log n W każdym kroku algorytmu zadanie o rozmiarze n jest sprowadzane do zadania o rozmiarze n / 2 Przykład: algorytm wyszukiwania binarnego jest klasy O(log n) Przykładowa realizacja wyszukiwania binarnego: Mamy odszukad wartośd 11 w ciągu liczb: 1, 2, 7, 9, 9, 11, 12, 15, 22, 34, 52, 67, 87, 90, 99 1, 2, 7, 9, 9, 11, 12 9, 11, Rodzaje złożoności (2) Złożoność liniowa n gdy dla każdego elementu pochodzącego z n elementowego zbioru danych wykonywana jest stała liczba operacji Przykłady: wyszukiwanie sekwencyjne sumowanie liczb w wektorze wyznaczanie minimum, maksimum 40 20
21 Rodzaje złożoności (3) złożoność liniowo logarytmiczna n log n gdy w każdym kroku zadanie o rozmiarze n jest sprowadzane do dwóch zadao o rozmiarze n/2, a uzyskane wyniki są ponownie scalane Przykład: sortowanie przez łączenie jest klasy O(n log n) sortowanie szybkie jest klasy O(n 2 ), ale przeciętny czas realizacji algorytmu jest rzędu n log n 41 Rodzaje złożoności (4) złożoność kwadratowa n 2 gdy dla każdej pary elementów realizowana jest pewna, stała liczba operacji (zwykle algorytmy takie są zapisywane za pomocą dwóch zagnieżdżonych pętli for) Przykłady: proste metody sortowania (przez wstawianie, wybieranie, bąbelkowe) są klasy O(n 2 ), również średni czas realizacji tych metod jest rzędu O(n 2 ) 42 21
22 Rodzaje złożoności (5) złożoność wielomianowa stopnia wyższego niż dwa (n 3, n 4,...) Przykład: mnożenie macierzy w sposób tradycyjny jest algorytmem klasy O(n 3 ) 43 Rodzaje złożoności (6) Złożoność wykładnicza postaci 2 n gdy realizowanych jest n kroków, a liczba operacji w każdym z nich wzrasta w sposób geometryczny Przykład: wieże Hanoi 44 22
23 Rodzaje złożoności (7) Złożoność wykładnicza typu n! gdy pewna, stała liczba operacji realizowana jest dla każdej permutacji n elementów Przykład: Tworzenie magicznych kwadratów z n elementów (pierwiastek z n musi byd wartością całkowitą) Algorytm postępowania: tworzymy kolejną permutację, wpisujemy do kwadratu i sprawdzamy, czy spełnia konieczne warunki. 45 Rodzaje złożoności (8) 46 23
24 Rekurencja Rekurencyjny sposób zapisu kodu programu - z poziomu podprogramu wywoływany jest ten sam podprogram. 47 Przykład (1) public class Rekurencja01 { static void f() { System.out.println("Poczatek"); f(); System.out.println("Koniec"); public static void main(string [] args) { f(); 48 24
25 Przykład (2) main() { f() Początek f(x) Koniec Początek f(x) Koniec Początek f(x) Koniec Początek f(x) Koniec i.t.d. 49 Przykład (3) Efekt uruchomienia programu: Poczatek Poczatek Poczatek... Poczatek Exception in thread "main" java.lang.stackoverflowerror 50 25
26 Warunek stopu Wywołania rekurencyjne muszą się zakooczyd (w podprogramie musi zostad zdefiniowany warunek zatrzymania się algorytmu /warunek stopu/). 51 Przykład (1) public class Rekurencja02 { static int licznik = 0; static void f() { licznik++; System.out.println("Poczatek"); if (licznik <=5) f(); System.out.println("Koniec"); public static void main(string [] args) { f(); 52 26
27 Przykład (2) main() { f() licznik = 1 Początek f(x) Koniec licznik = 2 Początek f(x) Koniec licznik = 3 Początek f(x) Koniec licznik = 4 Początek f(x) Koniec licznik = 5 Początek f(x) Koniec licznik = 6 Początek Koniec 53 Przykład (3) Efekt uruchomienia programu: Poczatek Poczatek Poczatek Poczatek Poczatek Poczatek Koniec Koniec Koniec Koniec Koniec Koniec 54 27
28 Rekurencyjne obliczanie silni (1) public class Rekurencja03 { static int silnia(int n) { int pomoc; System.out.println("Wywolanie: silnia(" + n + ")"); if ((n == 0) (n == 1)) pomoc = 1; else pomoc = n * silnia(n-1); System.out.println("Zwrocenie wyniku: " + n + "! = " + pomoc); return pomoc; public static void main(string [] args) { System.out.println("4! = " + silnia(4)); 55 Rekurencyjne obliczanie silni (2) 56 28
29 Rekurencja może byd kosztowna... public class Rekurencja04 { static int licznik = 0; static int fib(int n) //obliczanie n-tej liczby Fibonacciego { licznik++; if (n == 0) return 0; else if (n == 1) return 1; else return fib(n-1) + fib(n-2); public static void main(string [] args) { System.out.println("5-ta liczba Fibonacciego to: " + fib(5)); System.out.println("Liczba wywolan funkcji:" + licznik); 57 Efekt działania: 5-ta liczba Fibonacciego to: 5 Liczba wywolan funkcji:
30 Sposób wyznaczania liczb Fibonacciego Jeśli istnieje oczywiste rozwiązanie iteracyjne, to należy je wybrad. 59 Sterowanie kolejnością wykonywania działao (1) public class Rekurencja05 { static void sekwencja(int n) { System.out.print(n + " "); if (n > 0) sekwencja(n-1); public static void main(string [] args) { sekwencja(5); System.out.println(); Efekt działania programu:
31 Sterowanie kolejnością wykonywania działao (2) public class Rekurencja06 { static void sekwencja(int n) { if (n > 0) sekwencja(n-1); System.out.print(n + " "); public static void main(string [] args) { sekwencja(5); System.out.println(); Efekt działania programu Wieże Hanoi public class Rekurencja08 { static void przesun(int ile, char wiezazrodlowa, char wiezadocelowa, char wiezapomocnicza) { if (ile == 1) System.out.println(wiezaZrodlowa + " => " + wiezadocelowa); else { przesun(ile-1,wiezazrodlowa,wiezapomocnicza, wiezadocelowa); System.out.println(wiezaZrodlowa + " => " + wiezadocelowa); przesun(ile-1,wiezapomocnicza,wiezadocelowa, wiezazrodlowa); 62 31
32 Złożonośd algorytmu: Wieże Hanoi (1) Analizowana jest liczba przesunięd potrzebna do rozwiązania zadania z n krążkami (liczbę przesunięd oznaczymy przez P(n)) gdy n = 1 to P(1) = 1 gdy n > 1 to P(n) = 2 * P(n 1) Złożonośd algorytmu: Wieże Hanoi (2) Poziom 0 P(n) Liczba przesunięć 1 P(n-1) 1 P(n-1) 1 2 P(n-2) 1 P(n-2) P(n-2) 1 P(n-2) 2 3 P(n-3) 1 P(n-3) P(n-3) 1 P(n-3) P(n-3) 1 P(n-3) P(n-3) 1 P(n-3)
33 Złożonośd algorytmu: Wieże Hanoi (3) P(n) = P1 + P2 + P Pn = 2 n 1 W powyższym wzorze zastosowany został wzór na sumę n pierwszych elementów ciągu geometrycznego (o elementach b 1, b 2,..., bn i ilorazie q) S n = b 1 * (q n 1) / (q 1) 65 Inwersja elementów w wektorze (1) public class Rekurencja07 { static void wyswietlwektor(int [] w) { for(int i = 0; i < w.length; i++) System.out.print(w[i] + " "); System.out.println(); 66 33
34 Inwersja elementów w wektorze (2) static void inwersja(int poczatek, int koniec, int [] w) { if (poczatek < koniec) { int pomoc = w[poczatek]; w[poczatek] = w[koniec]; w[koniec] = pomoc; inwersja(poczatek+1,koniec-1,w); 67 Inwersja elementów w wektorze (3) public static void main(string [] args) { int [] tab = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11; wyswietlwektor(tab); inwersja(0,tab.length-1,tab); wyswietlwektor(tab); Efekt działania programu:
35 Sortowanie szybkie (1) Hoare, 1960 void quicksort(int tab[], int first, int last) wybierz jedną z wartości znajdujących się w wektorze (w poniższym algorytmie wybierana jest wartośd znajdująca się na pozycji o numerze first) dokonaj przemieszczenia elementów w wektorze, tak aby uzyskad: elementy < x x elementy >= x za pomocą tej samej procedury uporządkuj częśd wektora znajdującą się na lewo od wartości x oraz częśd znajdującą się na prawo od wartości x. średnia złożonośd obliczeniowa: O(n * log(n)) pesymistyczna złożonośd obliczeniowa O(n 2 ) 69 Sortowanie szybkie (2) public class QuickSort { public static void swap (int tab[], int x, int y) { int temp = tab[x]; tab[x] = tab[y]; tab[y] = temp; 70 35
36 Sortowanie szybkie (3) public static int partition(int tab[], int first, int last) { int pivot = tab[first]; int up = first; int down = last; do { while ((up < last) && (pivot >= tab[up])) up++; while (pivot < tab[down]) down--; if (up < down) swap(tab,up,down); while (up < down); swap(tab,first,down); return down; 71 Sortowanie szybkie (4) public static void quicksort(int tab[], int first, int last) { if (first >= last) return; int pivot = partition(tab, first, last); quicksort(tab, first, pivot-1); quicksort(tab, pivot+1, last); 72 36
37 Sortowanie szybkie (5) public static void main(string argv[]) { int n = 10; int tab[] = new int[n]; for (int i=0 ; i < n; i++) tab[i] = (int) (100 * Math.random()); quicksort(tab, 0, n-1); for (int i=0 ; i < n; i++) System.out.print(tab[i] + " "); System.out.println(); 73 Sortowanie przez łączenie Mergesort (1) sort(int poczatek, int koniec, int [] w), podziel wektory na dwie połowy, posortuj każdą z nich (za pomocą tej samej metody, o ile ich długośd > 1), połącz posortowane części w całośd, złożonośd obliczeniowa: O(n * log(n))
38 Sortowanie przez łączenie Mergesort (2) public class MergeSort { static void wyswietlwektor(int [] w) { for(int i = 0; i < w.length; i++) System.out.print(w[i] + " "); System.out.println(); 75 Sortowanie przez łączenie Mergesort (3) static void sort(int poczatek, int koniec, int [] w) { if (poczatek >= koniec) return; int srodek = (poczatek + koniec) / 2; sort(poczatek, srodek, w); sort(srodek+1, koniec, w); scal(poczatek, srodek, koniec, w); 76 38
39 Sortowanie przez łączenie Mergesort (3) static void scal(int poczatek, int srodek, int koniec, int [] w) { int pocz1 = poczatek; int kon1 = srodek; int pocz2 = srodek + 1; int kon2 = koniec; while ((pocz1 <= kon1) && (pocz2 <= kon2)) { if (w[pocz1] < w[pocz2]) pocz1++; else { int pomoc = w[pocz2]; for (int i = pocz2-1; i >= pocz1; i--) w[i+1] = w[i]; w[pocz1] = pomoc; pocz1++; kon1++; pocz2++; 77 Sortowanie przez łączenie Mergesort (4) public static void main(string [] args) { int [] tab = {1, 5, 3, 7, 7, 9, 2, 3, 2, 2, 3; wyswietlwektor(tab); sort(0,tab.length-1,tab); wyswietlwektor(tab); Wynik działania programu
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ółowoPodstawy 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ółowoALGORYTMY I STRUKTURY DANYCH
KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala
Bardziej szczegółowo3. 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ółowoOpis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja
Opis zagadnieo 1-3 Iteracja, rekurencja i ich realizacja Iteracja Iteracja to czynnośd powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Mianem iteracji określa
Bardziej szczegółowoMatematyczne 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ółowoAlgorytmika 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ółowoAlgorytmy 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ółowoWykł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ółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoWieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa
Wieczorowe Studia Licencjackie Wrocław, 7.11.2006 Wstęp do programowania Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Zaprezentujemy teraz algorytm na wyznaczanie wszystkich
Bardziej szczegółowoTEORETYCZNE 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ółowoZaawansowane 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ółowoProjektowanie algorytmów rekurencyjnych
C9 Projektowanie algorytmów rekurencyjnych wiczenie 1. Przeanalizowa działanie poniszego algorytmu dla parametru wejciowego n = 4 (rysunek 9.1): n i i
Bardziej szczegółowoTEORETYCZNE 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ółowoKlasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
Bardziej szczegółowoAnaliza 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ółowoZadanie 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ółowoZł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ółowoAlgorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew
Bardziej szczegółowoWstę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ółowoWprowadzenie 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ółowoZaliczenie. 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ółowo1. 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ółowoStrategia "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ółowoPierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pierwsze kroki Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Co znaczy
Bardziej szczegółowoTechnologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15
Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:
Bardziej szczegółowoWstę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ółowoAlgorytmy 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ółowo2. 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ółowoKierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Sylabus modułu: Informatyka A (03-MO1S-12-InfoA) 1. Informacje ogólne koordynator modułu
Bardziej szczegółowoZasady 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ółowoZł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ółowoSortowanie - 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ółowoTechnologie 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ółowo1. 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ółowoTeraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.
Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Grażyna Koba MIGRA 2019 Spis treści (propozycja na 2*32 = 64 godziny lekcyjne) Moduł A. Wokół komputera i sieci komputerowych
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro
Bardziej szczegółowoZa 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ółowoWstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro
Bardziej szczegółowoProgramowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Bardziej szczegółowoMetodyka i Technika Programowania 1
Metodyka i Technika Programowania 1 Pytania zaliczeniowe z wykładu mgr inż. Leszek Ciopiński Wykład I 1. Wprowadzenie 1.1. Programowanie imperatywne polega na: 1.2. Czy w programowaniu imperatywnym programista
Bardziej szczegółowoTeoretyczne 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ółowoINFORMATYKA 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ółowoParadygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Bardziej szczegółowoJava EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
Bardziej szczegółowoKierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Sylabus modułu: Informatyka (03-MO1N-12-Info) 1. Informacje ogólne koordynator modułu
Bardziej szczegółowoSYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17
Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2015 2019 Realizacja w roku akademickim 2016/17 1.1. Podstawowe informacje o przedmiocie/module Nazwa przedmiotu/ modułu
Bardziej szczegółowoWykł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ółowoPodyplomowe 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ółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Bardziej szczegółowoKARTA KURSU. Wstęp do programowania
KARTA KURSU Nazwa Nazwa w j. ang. Wstęp do programowania Introduction to Programming Kod Punktacja ECTS* 6 Koordynator dr inż. Magdalena Andrzejewska Zespół dydaktyczny: dr inż. Magdalena Andrzejewska
Bardziej szczegółowoAnaliza 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ółowoSylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln) 1. Informacje ogólne
Bardziej szczegółowokoordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (03-MO2S-12-MPIn) 1. Informacje ogólne koordynator
Bardziej szczegółowoMyśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
Bardziej szczegółowoTechnologie informacyjne - wykład 12 -
Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski
Bardziej szczegółowoInformatyka 1. Złożoność obliczeniowa
Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności
Bardziej szczegółowoEGZAMIN - 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ółowoProgramowanie 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ółowoPodstawowe 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ółowoStruktury 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ółowoINFORMATYKA 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ółowoRekurencja. Przygotowała: Agnieszka Reiter
Rekurencja Przygotowała: Agnieszka Reiter Definicja Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być
Bardziej szczegółowoJęzyk C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Bardziej szczegółowoJęzyk programowania PASCAL
Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO
Bardziej szczegółowoProgramowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]
Programowanie w Javie Lista nr 1 1. Jak uruchomić pierwszy program w Javie? Przykład przy wykorzystaniu NetBeans: File->New Project Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]
Bardziej szczegółowoSortowanie 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ółowoAlgorytmy 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ółowoProgramowanie komputerów
Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoProgramowanie 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ółowoWstę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ółowoZł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ółowoPodyplomowe 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ółowoWYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
WYŻSZA SZKOŁA IFORMATYKI STOSOWAEJ I ZARZĄDZAIA Złożoność algorytmów Złożoność pamięciowa algorytmu wynika z liczby i rozmiaru struktur danych wykorzystywanych w algorytmie. Złożoność czasowa algorytmu
Bardziej szczegółowoRekurencja. 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ółowoSpis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Bardziej szczegółowoSzczegółowy program kursów szkoły programowania Halpress
Szczegółowy program kursów szkoły programowania Halpress Lekcja A - Bezpłatna lekcja pokazowa w LCB Leszno "Godzina kodowania - Hour of Code (11-16 lat) Kurs (B) - Indywidualne przygotowanie do matury
Bardziej szczegółowoJęzyki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Bardziej szczegółowo5. 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ółowoAlgorytm. 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ółowoZapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
Bardziej szczegółowo12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.
12. Rekurencja. Funkcja rekurencyjna funkcja, która wywołuje samą siebie. Naturalne postępowanie: np. zbierając rozsypane pionki do gry podnosi się zwykle pierwszy, a potem zbiera się resztę w ten sam
Bardziej szczegółowoAlgorytmy z powrotami. Algorytm minimax
Algorytmy z powrotami. Algorytm minimax Algorytmy i struktury danych. Wykład 7. Rok akademicki: 2010/2011 Algorytm z powrotami rozwiązanie problemu budowane jest w kolejnych krokach, po stwierdzeniu (w
Bardziej szczegółowoPrzeglad podstawowych pojęć (3) Podstawy informatyki (3) dr inż. Sebastian Pluta. Instytut Informatyki Teoretycznej i Stosowanej
Przeglad podstawowych pojęć (1) Podstawy informatyki (3) dr inż. Sebastian Pluta pluta@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Program komputerowy to sekwencja instrukcji wykonywanych
Bardziej szczegółowoAlgorytm i złożoność obliczeniowa algorytmu
Algorytm i złożoność obliczeniowa algorytmu Algorytm - przepis postępowania, którego wykonanie prowadzi do rozwiązania określonego problemu określa czynności, jakie należy wykonać wyszczególnia wszystkie
Bardziej szczegółowoKARTA MODUŁU KSZTAŁCENIA
KARTA MODUŁU KSZTAŁCENIA I. Informacje ogólne 1 Nazwa modułu kształcenia Algorytmy i struktury danych 2 Nazwa jednostki prowadzącej moduł Instytut Informatyki, Zakład Informatyki Stosowanej 3 Kod modułu
Bardziej szczegółowoPodstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji
Podstawy programowania Laboratorium Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Instrukcja warunkowa if Format instrukcji warunkowej Przykład 1. if (warunek) instrukcja albo zestaw
Bardziej szczegółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoPodstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Bardziej szczegółowoPodstawy programowania. Podstawy C# Przykłady algorytmów
Podstawy programowania Podstawy C# Przykłady algorytmów Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania
Bardziej szczegółowoPoró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ółowoElektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Niestacjonarne (stacjonarne / niestacjonarne)
Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Informatyka 2 Nazwa modułu w języku angielskim Computer science 2 Obowiązuje
Bardziej szczegółowoRekurencja (rekursja)
Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)
Bardziej szczegółowoRozwiązanie. #include <cstdlib> #include <iostream> using namespace std;
Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu
Bardziej szczegółowofunkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)
Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.
Bardziej szczegółowoKonstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Bardziej szczegółowoWYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński
WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================
Bardziej szczegółowo