Informatyka A. Algorytmy

Podobne dokumenty
Analiza algorytmów zadania podstawowe

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

Analiza algorytmów zadania podstawowe

Jeszcze o algorytmach

Programowanie w VB Proste algorytmy sortowania

Programowanie Proceduralne

Wstęp do programowania

WPROWADZENIE DO ALGORYTMÓW Zadania

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Sortowanie przez scalanie

Algorytmy i Struktury Danych.

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Technologie informacyjne Wykład VII-IX

Podstawy programowania. Podstawy C# Przykłady algorytmów

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

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Wstęp do programowania

Strategia "dziel i zwyciężaj"

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Algorytmy sortujące i wyszukujące

Technologie Informatyczne Wykład VII

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2014 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytm i złożoność obliczeniowa algorytmu

Algorytm selekcji Hoare a. Łukasz Miemus

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

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

Algorytmy i struktury danych. Wykład 4

Zadanie 1. Korale (8 pkt) Rozważamy następującą rekurencyjną procedurę Korale, której parametrem jest dodatnia liczba całkowita n.

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy

Podstawy Informatyki

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Sortowanie bąbelkowe

Zagadnienia - równania nieliniowe

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Wstęp do programowania

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 )

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Laboratoria nr 1. Sortowanie

Sortowanie w czasie liniowym

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

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Roman Mocek Zabrze Opracowanie zbiorcze ze źródeł Scholaris i CKE

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji.

Wybrane algorytmy tablicowe

Wybrane zagadnienia teorii liczb

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

INFORMATYKA SORTOWANIE DANYCH.

Przykładowe zadania z teorii liczb

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Metody rozwiązywania równań nieliniowych

Algorytmy i Struktury Danych, 2. ćwiczenia

Matematyka stosowana i metody numeryczne

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wstęp do programowania

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Wymagania edukacyjne i sposoby sprawdzania edukacyjnych osiągnięć uczniów z informatyki - klasy II zakres rozszerzony

WYMAGANIA EGZAMINACYJNE Egzamin maturalny z INFORMATYKI

1. Algorytmika. WPROWADZENIE DO ALGORYTMIKI Wprowadzenie do algorytmów. Pojęcie algorytmu.

Okręgowa Komisja Egzaminacyjna w Krakowie 1

Zaawansowane algorytmy i struktury danych

Wstęp do programowania

Rozdział 4. Algorytmy sortowania 73 Rozdział 5. Typy i struktury danych 89 Rozdział 6. Derekursywacja i optymalizacja algorytmów 147

Poszukiwanie liniowe wśród liczb naturalnych

Efektywna metoda sortowania sortowanie przez scalanie

Wybrane metody przybliżonego. wyznaczania rozwiązań (pierwiastków) równań nieliniowych

Zadania do samodzielnego rozwiązania

PRZEDMIOTOWY SYSTEM OCENIANIA INFORMATYKA.

Metody numeryczne I Równania nieliniowe

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

1.1. Uzupełnij poniższą tabelę: i wynik(i)

1 Równania nieliniowe

Struktury Danych i Złożoność Obliczeniowa

Algorytmy przeszukiwania

Algorytmy. Programowanie Proceduralne 1

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

Algorytmy i Struktury Danych.

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

Wykład 4. Sortowanie

Wykład 2. Poprawność algorytmów

Problemy porządkowe zadania

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

Programowanie Funkcyjne. Marcin Kubica Świder,

Algorytmy sortujące 1

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

PROSTE RACHUNKI WYKONYWANE ZA POMOCĄ KOMPUTERA

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

Metody numeryczne. dr Artur Woike. Ćwiczenia nr 2. Rozwiązywanie równań nieliniowych metody połowienia, regula falsi i siecznych.

Wstęp do programowania

Rekurencja. Przykład. Rozważmy ciąg

Transkrypt:

Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy.................................. 2 4 Jednoczesne wyszukiwanie min i max w tablicy........................ 2 5 Schemat Hornera......................................... 3 6 Potęgowanie binarne....................................... 3 7 Zamiana z systemu dziesiętnego na system o innej podstawie................ 3 8 Rozwiązywanie liniowego równania diofantycznego...................... 3 9 Wyszukiwanie liniowe (sekwencyjne).............................. 4 10 Wyszukiwanie z wartownikiem................................. 4 11 Wyszukiwanie binarne...................................... 4 12 Sortowanie bąbelkowe...................................... 4 13 Sortowanie przez wybieranie (selekcję)............................. 5 14 Sortowanie przez wstawianie.................................. 5 15 Sortowanie przez zliczanie.................................... 5 16 Sortowanie przez scalanie.................................... 6 17 Scalanie tablic.......................................... 6 18 Sortowanie szybkie (quicksort)................................. 7 19 Obliczanie miejsca zerowego metodą połowienia....................... 8 20 Obliczanie miejsca zerowego metodą siecznych........................ 9 21 Sito Eratostenesa........................................ 9 22 Algorytm obliczania n-tego wyrazu ciągu Fibonacciego................... 10 23 Rekurencyjny algorytm Euklidesa............................... 10 24 Rekurencyjne podnoszenie do potęgi.............................. 10 25 Wyszukiwanie binarne - wersja rekurencyjna......................... 11 26 Szybkie podnoszenie do potęgi................................. 11 27 Wyszukiwanie min w tablicy - wersja rekurencyjna...................... 11 28 Algorytm obliczania n-tego wyrazu ciągu Fibonacciego - wersja wstępująca........ 12 29 Algorytm obliczania n-tego wyrazu ciągu Fibonacciego - wersja zstępująca........ 12 1

Algorytm 1: Algorytm Euklidesa Dane: a, b N + Wynik: NW D(a, b) while b 0 do c = a mod b a = b b = c Pisz a Algorytm 2: Rozszerzony algorytm Euklidesa Dane: a, b N + Wynik: d = NW D(a, b), {u, v} takie, że ua + vb = d (u 1, r 1, u 2, r 2 ) = (1, a, 0, b) while r 2 > 0 do q = r1 r 2 (u 1, r 1, u 2, r 2 ) = (u 2, r 2, u 1 q u 2, r 1 q r 2 ) Pisz d = r 1, {u, v} = (u 1, r 1 u 1 a b ) Algorytm 3: Wyszukiwanie min w tablicy Dane: T [1... n] Wynik: min(t [1],..., T [n]) min = 1 for i = 2,..., n do if T [i] < T [min] then min = i Pisz T [min] 2

Algorytm 4: Jednoczesne wyszukiwanie min i max w tablicy Dane: T [1... n] Wynik: min(t [1],..., T [n]), max(t [1],..., T [n]) 1. Jeśli n = 1, to min = max = T [1] 2. W kolejnych parach elementów umieść na pozycji nieparzystej element lżejszy, na parzystej element cięższy. Jeśli n jest nieparzyste, to ostatni element ciągu oznacz przez e 3. Szukamy elementu minimalnego dla indeksów nieparzystych, elementu maksymalnego dla indeksów parzystych 4. Jeśli n jest nieparzyste, to porównaj otrzymane wartości z e Algorytm 5: Schemat Hornera Dane: f(x) = a 0 X n + a 1 X n 1 +... + a n 1 X + a n, x 0 R Wynik: f(x 0 ) w = a 0 for i = 1,..., n do w = w x 0 + a i Pisz w Algorytm 6: Potęgowanie binarne Dane: b R, n N {0} Wynik: b n x = 1 z = b i = n while i > 0 do if i mod 2 = 1 then x = x z z = z z i = i 2 Pisz x Algorytm 7: Zamiana z systemu dziesiętnego na system o innej podstawie Dane: n N liczba w systemie dziesiętnym, p N podstawa systemu Wynik: n w systemie o podstawie p // T [1... log p n + 1] - tablica z cyframi liczby n w systemie o podstawie p k = 1 while n > 0 do T [k] = n mod p k = k + 1 n = n p for i = k 1,..., 1 do Pisz T [i] 3

Algorytm 8: Rozwiązywanie liniowego równania diofantycznego Dane: a, b, c Z takie, że ax + by = c Wynik: Rozwiązanie ogólne równania ax + by = c (d, u, v) = RozszerzonyAlgorytmEuklidesa(a, b) if c mod d = 0 then Pisz x = c u d + t b d Pisz y = c v d t a d Pisz Brak rozwiązań Algorytm 9: Wyszukiwanie liniowe (sekwencyjne) Dane: T 1,..., T n, K poszukiwany element Wynik: Indeks i {1,..., n} taki, że T i = K. W przypadku, gdy takie i nie istnieje zwracamy 1 1. i = 1 2. Jeśli K = T i, to zakończ działanie algorytmu i zwróć i 3. i = i + 1 4. Jeśli i n, to wróć do 2 w przeciwnym razie zakończ działanie algorytmu i zwróć 1 Algorytm 10: Wyszukiwanie z wartownikiem Dane: T 1,..., T n, K poszukiwany element Wynik: Indeks i {1,..., n} taki, że T i = K. W przypadku, gdy takie i nie istnieje zwracamy 1 1. i = 1, T n+1 = K 2. Jeśli T i = K, to idź do 4 3. i = i + 1, idź do 2 4. Jeśli i n, to zwróć i, w przeciwnym przypadku 1 4

Algorytm 11: Wyszukiwanie binarne Dane: A posortowana tablica, v poszukiwany element, l, r zakres w jakim poszukujemy Wynik: Indeks poszukiwanego elementu, w przypadku nie znalezienia elementu zwracamy 1 while r l do m = l+r 2 if v = A[m] then return m if v < A[m] then r = m 1 l = m + 1 return 1 Algorytm 12: Sortowanie bąbelkowe Dane: T [1... n] Wynik: Posortowana tablica T for j = 1,..., n 1 do for i = 1,..., n 1 do if T [i] > T [i + 1] then zamień(t [i], T [i + 1]) Algorytm 13: Sortowanie przez wybieranie (selekcję) Dane: T [1... n] Wynik: Posortowana tablica T for i = 1,..., n 1 do min = i for j = i + 1,..., n do if T [j] < T [min] then min = j zamień(t [i], T [min]) Algorytm 14: Sortowanie przez wstawianie Dane: T [1... n] Wynik: Posortowana tablica T for i = 2,... n do x = T [i] j = i 1 while j > 0 and x < T [j] do T [j + 1] = T [j] j = j 1 T [j + 1] = x 5

Algorytm 15: Sortowanie przez zliczanie Dane: A[1... n] tablica liczb naturalnych z przedziału [1, k] Wynik: Posortowana tablica A // B[1... n] - tablica posortowana // C[1... k] - tablica pomocnicza for i = 1,..., k do C[i] = 0 for i = 1,..., n do C[A[i]] = C[A[i]] + 1 for i = 2,..., k do C[i] = C[i] + C[i 1] for i = 1,..., n do B[C[A[i]]] = A[i] C[A[i]] = C[A[i]] 1 // C[i] liczba elementów = i // C[i] liczba elementów i Algorytm 16: Sortowanie przez scalanie Dane: A[1... n] tablica liczb naturalnych Wynik: Posortowana tablica A MergeSort(A, n) M sort(a, 1, n) M sort(a, l, r) if l < r then m = l+r 2 M sort(a, l, m) M sort(a, m + 1, r) Scalaj(A, l, m, r) 6

Algorytm 17: Scalanie tablic Dane: A[1... n] tablica liczb naturalnych, m - rozmiar tablicy Wynik: Posortowana tablica A Scalaj(A, l, m, r) C //- tablica pomocnicza i = l; j = m + 1; k = l; while i m and j r do if A[i] A[j] then C[k] = A[i] i = i + 1 C[k] = A[j] j = j + 1 k = k + 1 while i m do C[k] = A[i] i = i + 1 k = k + 1 while j r do C[k] = A[j] j = j + 1 k = k + 1 for k = l to r do A[k] = C[k] 7

Algorytm 18: Sortowanie szybkie (quicksort) Dane: T [1... n] Wynik: Posortowana tablica T Quicksort(A, n) Q sort(a, 1, n) Q sort(a, l, r) if l < r then j =Podział(A, l, r) Q sort(a, l, j 1) Q sort(a, j + 1, r) Podział(A, l, r) x = A[l] i = l + 1 j = r koniec = false while not koniec do while j > l and x A[j] do j = j 1 while i < r and x > A[i] do i = i + 1 if i < j then zamień(a[i], A[j]) j = j 1 i = i + 1 koniec = true A[l] = A[j] A[j] = x return j 8

Algorytm 19: Obliczanie miejsca zerowego metodą połowienia Dane: Funkcja ciągła f, końce przedziału a, b R, f(a)f(b) < 0 Wynik: x 0 R takie, że f(x 0 ) = 0 // ε dokładność z jaką chcemy liczyć miejsce zerowe f a = f(a) f b = f(b) while a b > ε do x 0 = a+b 2 f 0 = f(x 0 ) if f 0 = 0 then break if f a f 0 < 0 then b = x 0 a = x0 Pisz x 0 f a = f 0 9

Algorytm 20: Obliczanie miejsca zerowego metodą siecznych Dane: Funkcja ciągła f, końce przedziału x 1, x 2 R Wynik: x 0 R takie, że f(x 0 ) = 0 // ε dokładność z jaką chcemy liczyć miejsce zerowe // n maksymalna ilość przebiegów algorytmu f 1 = f(x 1 ) f 2 = f(x 2 ) i = n while i > 0 and x 1 x 2 > ε do x x 0 = x 1 f 1 x 2 1 f 1 f 2 f 0 = f(x 0 ) x 2 = x 1 f 2 = f 1 x 1 = x 0 f 1 = f 0 i = i 1 if i = 0 then Pisz Przekroczony limit przebiegów Pisz x 0 Algorytm 21: Sito Eratostenesa Dane: n N Wynik: Tablica zawierająca liczby pierwsze n Utwórz listę L = {1,..., n} L[1] = 0 k = n for i = 2,..., k do if L[i] 0 then for j = i 2, i 2 + i, i 2 + 2i,..., n do L[j] = 0 for i = 2,..., n do if L[i] 0 then Pisz i 10

Algorytm 22: Algorytm obliczania n-tego wyrazu ciągu Fibonacciego Dane: n N Wynik: n-ty wyraz ciągu Fibonacciego Function Fibonacci(n N) if ((n = 0) or (n = 1) ) then return n return Fibonacci (n 1)+Fibonacci (n 2) Algorytm 23: Rekurencyjny algorytm Euklidesa Dane: a, b N Wynik: NW D(a, b) Function Euklides(a N, b N) if (b = 0) then return a return Euklides (b, a mod b) Algorytm 24: Rekurencyjne podnoszenie do potęgi Dane: a, n N Wynik: a n Function Potega(a N, n N) if (n = 1) then return a if (n mod 2 = 0) then p =Potega(a, n/2) return p p p =Potega(a, (n 1)/2) return p p a 11

Algorytm 25: Wyszukiwanie binarne - wersja rekurencyjna Dane: A posortowana tablica, v poszukiwany element, l, r zakres w jakim poszukujemy Wynik: Indeks poszukiwanego elementu, w przypadku nie znalezienia elementu zwracamy 1 Function wysz-binarne(a, v N, l N, r N) if l r then return 1 m = l+r 2 if v = A[m] then return m if v < A[m] then return wysz-binarne(a, v, l, m 1) return wysz-binarne(a, v, m + 1, r) Algorytm 26: Szybkie podnoszenie do potęgi Dane: a, n N Wynik: a n Function szybkie-potega(a N, n N) if (n = 1) then return a m = n 2 p = szybkie-potega(a, m) p = p p if (n mod 2 = 1) then p = p a return p Algorytm 27: Wyszukiwanie min w tablicy - wersja rekurencyjna Dane: T [1... n], l, r N, gdzie l, r to odpowiednio prawy i lewy koniec tablicy Wynik: min(t [1],..., T [n]) Function minimum(t [1 n], l, r) if l r = 0 then return T [l] m = l+r 2 x =minimum(t, l, m) y =minimum(t, m + 1, r) if x < y then return x return y 12

Algorytm 28: Algorytm obliczania n-tego wyrazu ciągu Fibonacciego - wersja wstępująca Dane: n N Wynik: n-ty wyraz ciągu Fibonacciego Function Fibonacci-wstępujący(n N) F [0] = 0 F [1] = 1 for i = 2 to n do F [i] = F [i 1] + F [i 2] Algorytm 29: Algorytm obliczania n-tego wyrazu ciągu Fibonacciego - wersja zstępująca Dane: n N Wynik: n-ty wyraz ciągu Fibonacciego Function Fibonacci-zstępujący(n N) if F [n] = 0 then t = n if n > 1 then t=fibonacci-zstępujący(n 1)+Fibonacci-zstępujący(n 2) F [n] = t return F [n] 13