Programowanie Proceduralne

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

Download "Programowanie Proceduralne"

Transkrypt

1 Programowanie Proceduralne Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59

2 Cel wykładów z programowania proceduralnego Wykład jest poświęcony wprowadzeniu do języka C++ i jego celem jest nauczenie projektowania i psania programów proceduralnych w tym języku. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 2 / 59

3 Cel wykładów z programowania proceduralnego Wykład jest poświęcony wprowadzeniu do języka C++ i jego celem jest nauczenie projektowania i psania programów proceduralnych w tym języku. Zalecana Literatura Prata Stephen. Szkoła programowania. Język C++. Wydanie V. Helion, Andrzej Stasiewicz. C++. Ćwiczenia praktyczne. Wydanie III. Helion, Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 2 / 59

4 Struktura danych - tablica Tablica jednowymiarowa (wektor) jest takim uporzadkowanym zbiorem elementów jednorodnych, że z każdym elementem jest zwiazany uporzadkowany zbiór liczb całkowitych - indeksów. Indeksy w sposób jednoznaczny określaja pozycję każdego elementu tablicy. W tablicach każdy indeks zmienia się ze stałym krokiem od dolnej do górnej granicy. W przypadku tablic z języka C/C++/Java zbiór indeksów przebiega wartości od 0 do n 1, dla pewnej ustalonej liczby naturalnej n. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 3 / 59

5 Struktura danych - tablica Tablica jednowymiarowa (wektor) jest takim uporzadkowanym zbiorem elementów jednorodnych, że z każdym elementem jest zwiazany uporzadkowany zbiór liczb całkowitych - indeksów. Indeksy w sposób jednoznaczny określaja pozycję każdego elementu tablicy. W tablicach każdy indeks zmienia się ze stałym krokiem od dolnej do górnej granicy. W przypadku tablic z języka C/C++/Java zbiór indeksów przebiega wartości od 0 do n 1, dla pewnej ustalonej liczby naturalnej n. Przykład: 11 elementowa tablica liczb całkowitych. Indeksy Wartości Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 3 / 59

6 Struktura danych - tablica Przykład: 11 elementowa tablica liczb rzczywistych o nazwie A. Indeksy Wartości Notacja: 1 element tablicy: A[0] 5 element tablicy: A[4] i element tablicy: A[i] Zakres tablicy: A[0].. A[n-1], gdzie n oznacza liczbe elementów w tablicy. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 4 / 59

7 Struktura danych - tablica Przykład: 11 elementowa tablica liczb rzczywistych o nazwie A. Indeksy Wartości Notacja: 1 element tablicy: A[0] 5 element tablicy: A[4] i element tablicy: A[i] Zakres tablicy: A[0].. A[n-1], gdzie n oznacza liczbe elementów w tablicy. wartość 2 elementu tablicy A: A[1] = 3 wartość 9 elementu tablicy A: A[1] = 5.33 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 4 / 59

8 Struktura danych - tablica Przykład: 11 elementowa tablica zanków o nazwie C. Indeksy Wartości A L A M A K O T A Notacja: 1 element tablicy: C[0] 5 element tablicy: C[4] i element tablicy: C[i] Zakres tablicy: C[0].. C[n-1], gdzie n oznacza liczbe elementów w tablicy. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 5 / 59

9 Struktura danych - tablica Przykład: 11 elementowa tablica zanków o nazwie C. Indeksy Wartości A L A M A K O T A Notacja: 1 element tablicy: C[0] 5 element tablicy: C[4] i element tablicy: C[i] Zakres tablicy: C[0].. C[n-1], gdzie n oznacza liczbe elementów w tablicy. wartość 2 elementu tablicy C: C[1] = L wartość 9 elementu tablicy C: C[1] = A Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 5 / 59

10 Sumowanie elemantów z tablicy, instrukacja while Require: tablica A o rozmiarze n {A=[0],...,A[n-1] Algorytm: Suma 1: suma := 0; 2: i := 0; 3: while i < n do 4: suma := suma+a[i]; 5: i := i + 1; 6: end while 7: return suma; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 6 / 59

11 # include <iostream > using namespace std ; i n t main ( ) { i n t A [ 1 0 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 0 ; i n t suma = 0, i =0, n=10; while ( i < n ) { suma = suma + A[ i ] ; i = i +1; cout << "suma = " << suma << endl ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 7 / 59

12 Sumowanie elemantów z tablicy, instrukacja for Require: tablica A o rozmiarze n {A=[0],...,A[n-1] Algorytm: Suma 1: suma := 0; 2: for i := 0 n 1 do 3: suma := suma+a[i]; 4: end for 5: return suma; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 8 / 59

13 # include <iostream > using namespace std ; i n t main ( ) { i n t A [ 1 0 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 0 ; i n t suma = 0, i =0, n=10; f o r ( i n t i =0 ; i < n ; i ++){ suma = suma + A[ i ] ; cout << "suma = " << suma << endl ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 9 / 59

14 # include <iostream > using namespace std ; i n t main ( ) { long tab [12]={31,28,31,30,31,30,31,31,30,31,30,31; i n t k = 0 ; while ( k < 12) { cout << tab [ k ] << " " ; ++k ; cout << endl ; long s = 0 ; k = 0 ; while ( k < 12) { s += tab [ k ] ; ++k ; cout << s ; r e t u r n 0 ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 10 / 59

15 # include <iostream > using namespace std ; i n t main ( ) { long a []={31,28,31,30,31,30,31,31,30,31,30,31; i n t const n = s i z e o f ( a ) / s i z e o f ( a [ 0 ] ) ; i n t k ; f o r ( k = 0 ; k < n ; ++k ) { cout << a [ k ] << " " ; cout << endl ; long s = 0 ; f o r ( k = 0 ; k < n ; ++k ) { s += a [ k ] ; cout << s ; r e t u r n 0 ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 11 / 59

16 Sumowanie elemantów parzystych z tablicy, instrukacja while Require: tablica A o rozmiarze n {A=[0],...,A[n-1] Algorytm: Suma 1: suma := 0; 2: i := 0; 3: while i < n do 4: if A[i] mod 2 = 0 then 5: suma := suma+a[i]; 6: end if 7: i := i + 1; 8: end while 9: return suma; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 12 / 59

17 # include <iostream > using namespace std ; i n t main ( ) { i n t A [ 1 0 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 0 ; i n t suma = 0, i =0, n=10; while ( i < n ) { i f (A[ i ]%2==0) suma = suma + A[ i ] ; i ++; cout << "suma = " << suma << endl ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 13 / 59

18 Sumowanie elemantów parzystych z tablicy, instrukacja for Require: tablica A o rozmiarze n {A=[0],...,A[n-1] Algorytm: Suma 1: suma := 0; 2: for i := 0 n 1 do 3: if A[i] mod 2 = 0 then 4: suma := suma+a[i]; 5: end if 6: end for 7: return suma; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 14 / 59

19 # include <iostream > using namespace std ; i n t main ( ) { i n t A [ 1 0 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 0 ; i n t suma = 0, n=10; f o r ( i n t i =0; i < n ; i ++){ i f (A[ i ]%2==0) suma = suma + A[ i ] ; cout << "suma = " << suma << endl ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 15 / 59

20 Losowe wypełnianie tablicy # include <iostream > # include <ctime > # include < c s t d l i b > using namespace std ; i n t main ( ) { i n t a [ ] ; srand ( time ( 0 ) ) ; f o r ( i n t k = 0 ; k < 100; ++k ) { a [ k ] = rand ( ) % 100; f o r ( i n t k = 0 ; k < 100; ++k ) { cout << a [ k ] << " " ; r e t u r n 0 ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 16 / 59

21 Losowe wypełnianie tablicy #include<iostream> #include<ctime> #include<cstdlib> using namespace std; int wypelnij(int [], int); int wypisz(const int [], int); int main() { int a[100]; wypelnij(a, 100); wypisz(a, 100); return 0; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 17 / 59

22 Losowe wypełnianie tablicy int wypelnij(int a[], int n) { srand(time(0)); for (int k = 0; k < n; ++k) { a[k] = rand() % 100; int wypisz(const int a[], int n) { for (int k = 0; k < n; ++k) { cout << a[k] << " "; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 18 / 59

23 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 i najmniejszy zbioru. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 19 / 59

24 Element minimalny zbioru Require: tablica A o rozmiarze n {A=[0],...,A[n-1] Algorytm: MIN 1: min := 0; 2: for all i := 1 to n do 3: if A[i] < A[min] then 4: min := i; 5: end if 6: i := i + 1; 7: end for 8: return min; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 20 / 59

25 Element minimalny tablicy #include<iostream> #include<ctime> #include<cstdlib> using namespace std; int wypelnij(int [], int); int wypisz(const int [], int); int min(const int [], int); int main() { int a[100]; wypelnij(a, 10); wypisz(a, 10); int m = min(a, 10); cout << "Element minimalny: " << m << endl; return 0; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 21 / 59

26 Element minimalny tablicy int min(const int a[], int n) { int m = 0; for (int i=0; i<n ; i++){ if (a[i] < a[m]) m = i; return a[m]; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 22 / 59

27 Element maksymalny zbioru Require: tablica A o rozmiarze n {A=[0],...,A[n-1] Algorytm: MAX 1: max := 0; 2: for all i := 1 to n do 3: if A[i] > A[max] then 4: max := i; 5: end if 6: i := i + 1; 7: end for 8: return max; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 23 / 59

28 Element maksymalny tablicy #include<iostream> #include<ctime> #include<cstdlib> using namespace std; int wypelnij(int [], int); int wypisz(const int [], int); int max(const int [], int); int main() { int a[100]; wypelnij(a, 10); wypisz(a, 10); int m = max(a, 10); cout << "Element maksymalny: " << m << endl; return 0; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 24 / 59

29 Element maksymalny tablicy int max(const int a[], int n) { int m = 0; for (int i=0; i<n ; i++){ if (a[i] > a[m]) m = i; return a[m]; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 25 / 59

30 Wyszukiwanie binarne Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartości w posortowanych zbiorach (np. tablicy). Skuteczność wyszukiwania binarnego wynika z tego, że zamiast przegladać wszystkie elementy posortowanego zbioru po kolei, wykorzystujemy informację o tym, że jest on uporzadkowany. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 26 / 59

31 Wyszukiwanie binarne Algorytm: Dana jest tablica A oraz poszukiwany element key. Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 27 / 59

32 Wyszukiwanie binarne Algorytm: Dana jest tablica A oraz poszukiwany element key. Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Jeśli środkowy element jest większy niż key, to poszukiwany element jeśli jest w tablicy, to jest w jej lewej części. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 27 / 59

33 Wyszukiwanie binarne Algorytm: Dana jest tablica A oraz poszukiwany element key. Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Jeśli środkowy element jest większy niż key, to poszukiwany element jeśli jest w tablicy, to jest w jej lewej części. Jeśli środkowy element jest mniejszy niż key, to poszukiwany element jeśli jest w tablicy, to jest w jej prawej części. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 27 / 59

34 Wyszukiwanie binarne - przykład Znaleźć liczbę 9 w ciagu: 3, 5, 7, 8, 9, 12, 15. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 28 / 59

35 Wyszukiwanie binarne - algorytm Require: tablica A o rozmiarze n, wartość key {A=[0],...,A[n-1] Algorytm: Wyszukiwanie binarne 1: left := 0; 2: right := n 1; 3: while left <= right do 4: curr := (left + right)/2; 5: if key = a[curr] then 6: return curr; 7: else 8: if key < a[curr] then 9: right := curr 1; 10: else 11: left := curr + 1; 12: end if 13: end if 14: end while Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 29 / 59

36 Wyszukiwanie binarne #include<iostream> #include<ctime> #include<cstdlib> using namespace std; int wypelnij(int [], int); int wypisz(const int [], int); int binsearch(int a[], int, int ); int main() { int a[100]; wypelnij(a, 10); wypisz(a, 10); cout << "Podaj liczbe jakiej szukasz: "; int n; cin >> n; int m = binsearch(a, 10, n); if (m == -1) cout << "Podanego elementu nie ma w tablicy" << endl; else cout << "Element znajduje sie na " << m << " pozycji" << endl; return 0; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 30 / 59

37 Wyszukiwanie binarne int binsearch(int a[], int n, int key) { int left = 0, right = n - 1; while (left <= right) { int curr = (left + right) / 2; if (key == a[curr]) { return curr; else if (key < a[curr]) { right = curr - 1; else { left = curr + 1; return (-1); Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 31 / 59

38 Wyszukiwanie binarne int wypelnij(int a[], int n) { srand(time(0)); for (int k = 0; k < n; ++k) { a[k] = k; int wypisz(const int a[], int n) { for (int k = 0; k < n; ++k) { cout << a[k] << " "; cout << endl; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 32 / 59

39 Liczby pierwsze Liczby pierwsze już od wieków fascynowały i zastanawiały uczonych. W matematyce pojęcie pierwszości liczb, to fundamentalne zagadnienie dotyczace liczb naturalnych. Jest ich nieskończenie wiele, co udowodnił już Euklides. Liczba pierwsza jest liczba naturalna, która dzieli się bez reszty tylko przez 1 i przez sama siebie, np. 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 itd. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 33 / 59

40 Sita Eratostenesa Sito Eratostenesa to algorytm wyznaczania liczb pierwszych z zadanego przedziału [2, n]. Idea: Ze zbioru liczb naturalnych większych od jedności, tj. {2, 3, 4,..., wybieramy najmniejsza, czyli 2, i wykreślamy wszystkie jej wielokrotności większe od niej samej, tj. wszystkie liczby parzyste większe od 2. Z pozostałych liczb wybieramy najmniejsza niewykreślona liczbę, tj. 3, i usuwamy wszystkie jej wielokrotności większe od niej samej: {6, 9, 12,...; nie przejmujemy się tym, że niektóre liczby (np. 6) będa skreślane więcej niż raz. Według tej samej procedury postępujemy dla liczby 5. Potem dla liczby 7, 11, 13, itd., aż do sprawdzenia wszystkich niewykreślonych wcześniej liczb. Dla danej liczby n wszystkie niewykreślone liczby mniejsze od n sa liczbami pierwszymi. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 34 / 59

41 Zadanie! Zaimplementować Algorytm na laboratoriach! Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 35 / 59

42 Algorym wyznaczania liczb pierwszych Twierdzenie 1 Liczba złożona n posiada dzielnik, który jest mniejszy od pierwiastka z tej liczby, tj. sqrt(n). Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 36 / 59

43 Algorym wyznaczania liczb pierwszych Twierdzenie 1 Liczba złożona n posiada dzielnik, który jest mniejszy od pierwiastka z tej liczby, tj. sqrt(n). Dowód - idea: Niech n będzie liczba złożona. Wtedy n = a b oraz 0 < a b < n. Zatem musi być a sqrt(n), gdyż inaczej otrzymalibyśmy a b > n (sprzeczność). Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 36 / 59

44 Algorym wyznaczania liczb pierwszych Require: tablica A o rozmiarze n+1 {A=[0,...,n+1] Algorytm: Czy n jest liczba pierwsza 1: i := 2 2: while i < sqrt(n)+1 do 3: if i jest dzielnikiem n then 4: return n jest liczba złożona; 5: end if 6: i := i + 1; 7: end while 8: return n jest liczba pierwsza; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 37 / 59

45 Zadanie! Zaimplementować Algorytm na laboratoriach! Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 38 / 59

46 Liczby doskonałe Liczba doskonała jest liczba naturalna, równa sumie wszystkich swoich dzielników, mniejszych od niej samej. Najmniejsza liczba doskonała jest 6, ponieważ 6 = Następna jest 28 (28 = ). Kolejne znane to 496, 8128, Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 39 / 59

47 Liczby doskonałe W IX księdze Elementów Euklides podał następujacy sposób znajdowania liczb doskonałych parzystych: obliczać sumy kolejnych potęg dwójki np , jeżeli, któraś z otrzymanych sum okaże się liczba pierwsza, należy pomnożyć ja przez ostatni składnik i otrzymamy liczbę doskonała. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 40 / 59

48 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) Programowanie Proceduralne Wykład 1 41 / 59

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

50 Problem Sortowania Definicja problemu Niech (U, ) będzie zbiorem liniowo uporzadkowanym z relacja porzadkuj ac a i niech (a 1, a 2,..., a n ) będzie ciagiem n elementów z U, dla pewnego całkowitego n > 0. Znaleźć permutację (a 1, a 2,..., a n) taka, że (a 1 a 2 a n). Przykład Wejście: Wyjście: Uwaga! Na U moga składać się zarówno liczby całkowite lub rzeczywiste, jak i U może być zbiorem rekordów, które należy posortować według ich kluczy. Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 41 / 59

51 Popularne algorytmy sortowania Sortowanie przez porównywanie elementów: Sortowanie przez proste wybieranie (ang. selection sort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie babelkowe (ang. bubblesort) Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 42 / 59

52 Popularne algorytmy sortowania Sortowanie przez porównywanie elementów: Sortowanie przez proste wybieranie (ang. selection sort) Sortowanie przez wstawianie (ang. insertion sort) Sortowanie babelkowe (ang. bubblesort) Inne - będa omawiane na przedmiocie ASD Sortowanie przez scalanie (ang. merge sort) sortowanie szybkie (ang. quicksort) Sortowanie przez zliczanie (ang. counting sort) Sortowanie pozycyjne (ang. radix sort) sortowanie przez kopcowanie (ang. heapsort) Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 42 / 59

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

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

55 Sortowanie przez proste wybieranie - Przykład nr iteracji - i Tablica Minimum 0 [9,1,6,8,4,3,2,0] 0 1 [0,1,6,8,4,3,2,9] 1 - na właściwej pozycji 2 [0,1,6,8,4,3,2,9] 2 3 [0,1,2,8,4,3,6,9] 3 4 [0,1,2,3,4,8,6,9] 4 5 [0,1,2,3,4,8,6,9] 6 6 [0,1,2,3,4,6,8,9] 8 7 [0,1,2,3,4,6,8,9] 9 - na właściwej pozycji Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 45 / 59

56 Sortowanie przez proste wybieranie - Przykład K r o k i a l g o r y t m u Klucze i = 2 i = 3 i = 4 i = 5 i = Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 46 / 59

57 void s e l e c t i o n S o r t ( i n t a [ ], i n t size ) { i n t i, j, min, temp ; f o r ( i = 0 ; i < size 1; i ++) { min = i ; f o r ( j = i +1; j < size ; j ++) { i f ( a [ j ] < a [ min ] ) min = j ; temp = a [ i ] ; a [ i ] = a [ min ] ; a [ min ] = temp ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 47 / 59

58 void s e l e c t i o n S o r t ( i n t [ ] a, i n t size ) { f o r ( i n t n = size ; n > 1 ; n ) { i n t j = max( a, n 1); swap ( a, j, n 1 ) ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 48 / 59

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

60 Sortowanie przez wstawianie - przykład Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 50 / 59

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

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

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

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

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

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

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

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

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

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

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

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

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

74 Sortowanie przez wstawianie - Przykład nr iteracji (wartość i ) Tablica Rozważany element 0 [9,1,6,8,4,3,2,0] 9 1 [1,9,6,8,4,3,2,0] 1 2 [1,6,9,8,4,3,2,0] 6 3 [1,6,8,9,4,3,2,0] 8 4 [1,6,8,4,9,3,2,0] 4 [1,6,4,8,9,3,2,0] 4 [1,4,6,8,9,3,2,0] 4 5 [1,4,6,8,3,9,2,0] 3 [1,4,6,3,8,9,2,0] 3 [1,4,3,6,8,9,2,0] 3 [1,3,4,6,8,9,2,0] 3 6 [1,2,3,4,6,8,9,0] 2 7 [1,2,3,4,6,8,9,0] 0 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 52 / 59

75 Sortowanie przez wstawianie - przykład K r o k i a l g o r y t m u Klucze i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 53 / 59

76 void i n s e r t ( i n t [ ] a, i n t n, i n t x ) { / / i n s e r t x i n t o a [ 0.. i 1] i n t j ; f o r ( j = i 1 ; j >= 0 && x < a [ j ] ; j ) a [ j + 1 ] = a [ j ] ; a [ j + 1 ] = x ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 54 / 59

77 void i n s e r t S o r t ( i n t [ ] a, i n t n ) { f o r ( i n t i = 1 ; i < n ; i ++) { / / i n s e r t a [ i ] i n t o a [ 0 : i 1] i n s e r t ( a, i, a [ i ] ) ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 55 / 59

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

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

80 Sortowanie babelkowe - przykład 44 Klucze i = i = 2 K r o k i a l g o r y t m u i = i = i = i = i = Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 58 / 59

81 void bubblesort ( i n t A [ ], i n t n ) { f o r ( i n t i =0; i <n ; i ++) f o r ( i n t j =n 1; j > i ; j ) i f (A[ j ] < A[ j 1]) { / / zamiana A[ j 1] z A[ j ] i n t temp= A[ j 1]; A[ j 1] = A[ j ] ; A[ j ]= temp ; Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 59 / 59

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

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

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

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

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

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

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 11 1 / 52 Pętla for # i n c l u d e

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

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

Wstęp do programowania

Wstęp do programowania wykład 6 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji

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

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

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od

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

Programowanie Procedurale

Programowanie Procedurale Programowanie Procedurale Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Programowanie Procedurale Wykład 6 1 / 27 Zbiór ctime zawiera deklarcję

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

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Rozwią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ółowo

Wstęp do programowania

Wstęp do programowania wykład 7 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji

Bardziej szczegółowo

Wykład 4. Sortowanie

Wykład 4. Sortowanie Wykład 4 Sortowanie 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n Po co sortować? Podstawowy problem dla algorytmiki

Bardziej szczegółowo

Algorytmy 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

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

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne

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

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

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

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

Bardziej szczegółowo

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Wykład 5. Sortowanie w czasie liniowologarytmicznym Wykład 5 Sortowanie w czasie liniowologarytmicznym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n 2 Zestawienie

Bardziej szczegółowo

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

Wstęp do programowania

Wstęp do programowania wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe 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

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

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje

Bardziej szczegółowo

tablica: dane_liczbowe

tablica: dane_liczbowe TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica

Bardziej szczegółowo

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

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy 1 Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.

Bardziej szczegółowo

Kontrola przebiegu programu

Kontrola przebiegu programu Kontrola przebiegu programu Wykład 9 Instrukcje sterujące: pętle rozgałęzienia skoki PRZYPOMINAJKA Zadanie : Zaprojektuj rekurencyjny przepis na wyznaczenie największej takiej liczby m, że 2 m jest podzielnikiem

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. 1. Sortowanie 2. Statki i okręty. programowanie cz.7. poniedziałek, 2 marca 2009

Algorytmy. 1. Sortowanie 2. Statki i okręty. programowanie cz.7. poniedziałek, 2 marca 2009 Algorytmy. Sortowanie 2. Statki i okręty programowanie cz. ALGORYTMY SORTUJĄCE A. Przez zamianę (bąbelkowe) B. Przez wybieranie Najpopularniejsze metody sortowania C. Przez wstawianie Przez zamianę (sortowanie

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 5 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Zadanie o kotach z poprzedniego wykładu # include < iostream > using namespace std ; int main (){ int rozmiar_ rodzinki,

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

PODSTAWY INFORMATYKI wykład 10.

PODSTAWY INFORMATYKI wykład 10. PODSTAWY INFORMATYKI wykład 10. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutniacza w Krakowie WEAIiE,

Bardziej szczegółowo

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

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

PDF stworzony przez wersję demonstracyjną pdffactory Pro  Program 15 Program 15 Program zawierający następujące funkcje: funkcję wczytującą elementy do tablicy liczb całkowitych podanej jako parametr (długość tablicy również ma być podana jako parametr); funkcję wypisującą

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 3 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Instrukcja wielokrotnego wyboru Instrukcja wielokrotnego wyboru switch umożliwia podejmowanie decyzji na podstawie wartości

Bardziej szczegółowo

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych - Lista Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.) Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : 15 1 grudnia 005.) 1. Program w C 1 zawiera deklaracje 1 void P1 ( int a, int b) { int i ; 3 for ( i =0;i

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne

Bardziej szczegółowo

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki INFORMATYKA Z MERMIDONEM Programowanie Moduł 5 / Notatki Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Realizator projektu: Opracowano w ramach projektu

Bardziej szczegółowo

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i

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

Tablice jednowymiarowe

Tablice jednowymiarowe Tablice jednowymiarowe Gdy mamy do czynienia z zestawem zmiennych, to można z nich zrobić tablicę. Tablica jest ciągiem elementów tego samego typu, który zajmuje ciągły obszar pamięci. Korzyść z zastosowania

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

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

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

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

Proste programy w C++ zadania

Proste programy w C++ zadania Proste programy w C++ zadania Zbiór zadao do samodzielnego rozwiązania stanowiący powtórzenie materiału. Podstawy C++ Budowa programu w C++ Dyrektywy preprocesora Usunięcie dublujących się nazw Częśd główna

Bardziej szczegółowo

Rekurencja. Przygotowała: Agnieszka Reiter

Rekurencja. 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ółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima Uwagi przed sprawdzianem nr 1.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima Uwagi przed sprawdzianem nr 1. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 5 : Algorytmy sortowania. Struktury

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. Układ graficzny CKE 2013 KOD UZUPEŁNIA ZDAJĄCY PESEL miejsce na naklejkę EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY

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

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

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację

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

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

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

Liczby całkowite i rzeczywiste

Liczby całkowite i rzeczywiste Wykład 4(20 marzec 2014r.) Liczby całkowite i rzeczywiste Paulina Rogowiecka Klaudia Kamińska Adrianna Znyk 1 Spis treści: Czynniki pierwsze metoda próbnych dzieleń Pierwszość liczby naturalnej algorytmy

Bardziej szczegółowo

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej. Wrocław, 28.11.2017 Wstęp do informatyki i programowania: liczby pierwsze Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Zajmiemy się liczbami pierwszymi... liczby

Bardziej szczegółowo

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak (3 kwiecień 2014) Marika Pankowska Kamila Pietrzak Wyszukiwanie liniowe (ang. linear search), zwane również sekwencyjnym (ang. sequential search) polega na przeglądaniu kolejnych elementów zbioru Z. Jeśli

Bardziej szczegółowo

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata MACIERZE Sobiesiak Łukasz Wilczyńska Małgorzata Podstawowe pojęcia dotyczące macierzy Nie bez przyczyny zaczynamy od pojęcia macierzy, które jest niezwykle przydatne we wszystkich zastosowaniach, obliczeniach

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

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) 1 Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi: Program 20 Napisać następujące funkcje: funkcję pobierającą (z klawiatury) zawartość tablicy liczb całkowitych podanej jako parametr, o długości podanej jako parametr; funkcję wypisującą zawartość tablicy

Bardziej szczegółowo

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Podstawowe algorytmy przetwarzania tablic (wypełnianie, porównywanie elementów,

Bardziej szczegółowo

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ

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

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Sortowanie. Bartman Jacek Algorytmy i struktury

Sortowanie. Bartman Jacek Algorytmy i struktury Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

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

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji.

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji. 1. Znajdowanie miejsca zerowego funkcji metodą bisekcji. Matematyczna funkcja f ma być określona w programie w oddzielnej funkcji języka C (tak, aby moŝna było łatwo ją zmieniać). Przykładowa funkcja to:

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

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

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

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q: Wykład 4 Wyszukiwania w tablicach posortowanych 1. Wyszukiwanie sekwencyjne w tablicy posortowanej 2. Wyszukiwanie binarne bez powtórzeń 3. Wyszukiwanie binarne z powtórzeniami 1 2 3 4 5 6 7 8 9 10 11

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

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic: Tablice TEORIA Tablica to ciąg obiektów tego samego typu, które zajmują ciągły obszar w pamięci. Dzięki stosowaniu tablic, zamiast nazywania każdej z np. stu zmiennych osobno możemy zabudować tablicę 100-elementową,

Bardziej szczegółowo

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

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja Podstawy Informatyki Metalurgia, I rok Wykład 5 Rekurencja Rekurencja z łacińskiego oznacza to przybiec z powrotem - osiągniesz rzecz wielką, jeśli zawrócisz po to, by osiągnąć rzeczy małe Przykład: Małe

Bardziej szczegółowo

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

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja Podstawy Informatyki Metalurgia, I rok Rekurencja z łacińskiego oznacza to przybiec z powrotem - osiągniesz rzecz wielką, jeśli zawrócisz po to, by osiągnąć rzeczy małe Małe dziecko otrzymuje polecenie

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne 1 Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana. 8. Wektory Przykłady 8.1. Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana. Uwaga! Kod poniżej. To zadanie można rozwiązać przy użyciu wiedzy

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

5. Rekurencja. Przykłady

5. Rekurencja. Przykłady 5. Rekurencja Uwaga! W tym rozdziale nie są omówione żadne nowe konstrukcje języka C++. Omówiona jest za to technika wykorzystująca funkcje, która pozwala na rozwiązanie pewnych nowych rodzajów zadań.

Bardziej szczegółowo

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

funkcje 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ółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Wykład 5 Podstawowe techniki programownia w przykładach Janusz Szwabiński Plan wykładu: Metoda babilońska wyliczania pierwiastka Liczby pierwsze i sito Eratostenesa Metoda bisekcji

Bardziej szczegółowo