Podstawy programowania. Przykłady algorytmów Cz. 2 Sortowanie

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

Download "Podstawy programowania. Przykłady algorytmów Cz. 2 Sortowanie"

Transkrypt

1 Podstawy programowania Przykłady algorytmów Cz. 2 Sortowanie

2 Złożoność obliczeniowa Złożoność obliczeniowa to ilość zasobów niezbędna do wykonania algorytmu. Wyróżnia się dwa rodzaje: Złożoność czasową (obliczeniową) Złożoność pamięciową Złożoność zależy od rozmiaru danych wejściowych (np. sortowanie, niezależnie od użytego algorytmu, będzie trwało tym dłużej, im większy jest zbiór sortowanych elementów)

3 Złożoność obliczeniowa Istnieje wiele miar złożoności obliczeniowej i wiele notacji. W większości miar najważniejsze jest asymptotyczne tempo wzrostu (tj. jak złożoność rośnie ze wzrostem rozmiaru danych). Do porównywania algorytmów najczęściej używa się notacji O (dużego O), która podaje asymptotyczne ograniczenie górne W notacji O uwzględnia się tylko funkcję dominującą i pomija się współczynniki liczbowe, ponieważ dla odpowiednio dużych zbiorów danych współczynniki stałe mają mniej istotne znaczenie niż rodzaj funkcji dominującej, np. f(n) = 100 n n => O(n 2 ) f(n) = 1000 n => O(n)

4 Złożoność obliczeniowa Przykładowe złożoności algorytmów, w porządku rosnącym: O(1) złożoność stała, O(logn) złożoność logarytmiczna, O(n) złożoność liniowa, O(nlogn) złożoność liniowo-logarytmiczna, O(n 2 ) złożoność kwadratowa, O(n k ) złożoność wielomianowa (k jest stałą), O(k n ) złożoność wykładnicza (k jest stałą), O(n!) złożoność rzędu silnia

5 Złożoność obliczeniona 1,0E+12 1,0E+11 1,0E lat 100 lat 1,0E+09 1,0E+08 1 rok 1,0E+07 1,0E+06 1,0E+05 1,0E+04 1,0E+03 1,0E+02 1,0E+01 1,0E+00 1 doba 1 godz. 1 min. 1 s 1,0E-01 1,0E-02 1,0E-03 1 ms 1,0E-04 1,0E-05 1,0E E+10 N N*logN N^2 2^N N!

6 Sortowanie Sortowanie Istnieje wiele algorytmów sortowania; niektóre mają bardzo specyficzne lub ograniczone zastosowanie (np. stosowane głównie w systemach wbudowanych albo kiedy możliwość ich użycia zależy od statystycznych cech sortowanego zbioru), inne są uniwersalne. Pierwsze algorytmy sortowania pojawiły się w latach 50 ub. wieku (m.in. bublesort 1956, quicksort 1959), ale ciągle są opracowywane nowe użyteczne algorytmy, które znajdują zastosowania (np. timsort, opracowany w 2002 r., jako hybrydowy algorytm merge sort oraz insertion sort, zastosowany m.in. jako wbudowany algorytm sortowania w językach Python i GNU Octave, oraz na platformach Java SE i Android) Duże zainteresowanie algorytmami sortowania wynika z powszechności zastosowań, dużej złożoności obliczeniowej (oraz potrzeby jej zmniejszenia, ze względu na powszechne i częste zastosowania) Algorytmy sortowania są też wdzięcznym tematem nauki programowania (algorytmy jako takie, ale też np. złożoność obl.)

7 Sortowanie Właściwości i kryteria oceny algorytmów sortowania: Złożoność obliczeniowa Nie zawsze można ją określić jednoznacznie, ponieważ w wielu algorytmach zależy od rozkładu elementów dlatego wyznacza się złożoność optymistyczną (best), średnią i pesymistyczną (worst); Złożoność pamięciowa Algorytmy sortowania "w miejscu" ("in-place") zamieniają elementy miejscami i nie potrzebują dodatkowej pamięci na same elementy, jednak czasami zużywają inne zasoby; Rekursja Użycie rekursji zużywa zasoby (stos systemowy), co może ograniczać zastosowania algorytmów np. quicksort i syst. wbudowane; Istnieją algorytmy rekusywne, nierekursywne oraz mieszane

8 Sortowanie Właściwości i kryteria oceny algorytmów sortowania: Stabilność Algorytm sortowania jest stabilny, jeżeli "równe" elementy po sortowaniu zachowują swój porządek sprzed sortowania; Mechanizm sortowania (sposób działania) Wyróżnia się algorytmy sortowania przez porównanie ("comparison sort") oraz takie, które porównania nie używają ("integer sort"); Metoda sortowania Wyróżnia się kilka ogólnych metod: sortowanie przez wstawianie, zamiany, wybór, łączenie konkretne algorytmy należą do jednej z metod ogólnych, np. bublesort jest sortowaniem przez zamiany

9 Sortowanie Właściwości i kryteria oceny algorytmów sortowania: Adaptacyjność Zdolność do skrócenia czasu sortowania, jeżeli zbiór jest częściowo posortowany (ma część elementów we właściwej kolejności) np. bublesort ma śrenią złożoność O(n 2 ) oraz optymistyczną O(n), natomiast insertion sort zawsze O(n 2 ) Złożoność implementacji Niektóre hybrydowe algorytmy sortowania mają bardzo złożone algorytmy, a ich implementacja może być kłopotliwa dla początkującego programisty; inne, jak bublesort, są dziecinnie proste

10 Sortowanie Algorytmy sortowania stabilne: sortowanie bąbelkowe (ang. bubblesort) O(n 2 ) sortowanie przez wstawianie (ang. insertion sort) O(n 2 ) sortowanie przez scalanie (ang. merge sort) O(nlogn) wymaga dodatkowej pamięci O(n) sortowanie przez zliczanie (ang. counting sort) O(n+k) wymaga dodatkowej pamięci sortowanie kubełkowe (ang. bucket sort) O(n) wymaga dodatkowej pamięci sortowanie biblioteczne (ang. library sort) O(nlogn)

11 Sortowanie Algorytmy sortowania niestabilne : sortowanie przez wybieranie (ang. selection sort) O(n 2 ) sortowanie Shella (ang. shellsort) O(nlogn) sortowanie szybkie (ang. quicksort) O(nlogn) sortowanie przez kopcowanie (ang. heapsort) O(nlogn)

12 Sortowanie Złożoność obliczeniowa Sortowanie przez porównanie Na sortowanie przez porównanie składają się dwie operacje: porównywania elementów i (ewentualnie) ich zamiany która z tych operacji jest bardziej krytyczna? Przy sortowaniu liczb więcej czasu zajmie zamiana (wykonywana w trzech krokach: temp t i, t i t j, t j temp) Przy sortowaniu złożonych danych wielokrotnie więcej czasu zajmie porównanie (np. "Kowalski, Bartłomiej" i "Kowalski, Bartosz"); zamiana zwykle nie dotyczy samych danych to strata czasu tylko referencji do nich Uwaga! W dalszej części zamiana liczb, dla skrócenia zapisu, będzie oznaczana tak: t i t i+1 odpowiada to trzykrokowej operacji powyżej

13 Sortowanie Złożoność obliczeniowa Sortowanie przez porównanie Najprostsze ("naturalne", intuicyjnie zrozumiałe) algorytmy sortowania mają złożoność obliczeniową O(n 2 ) średnią lub pesymistyczną Dolne ograniczenie złożoności wynosi O(nlogn) istnieją zarówno stabilne, jak i niestabilne algorytmy o tej złożoności Sortowanie bez porównań ("integer sort") Najprostsze algorytmy mają złożoność O(n k) lub O(n+r) (k oznacza rozmiar klucza sortowania, r zakres wartości kluczy) Dolne ograniczenie złożoności wynosi O(n), jednak jest osiągalne tylko dla algorytmów niestabilnych Sortowanie bez porównań ma istotne praktyczne ograniczenia (co do złożoności klucza sortowania oraz rozkładu wartości kluczy) oraz zwykle większą złożoność pamięciową, co najmniej O(n)

14 Sortowanie bąbelkowe Sortowanie bąbelkowe jest chyba najprostszym pojęciowo oraz najłatwiejszym w implementacji algorytmem sortowania Polega na porównywaniu sąsiednich elementów i w razie potrzeby ich zamianie; Przy N elementach trzeba N-1 porównań, a cały proces trzeba powtórzyć co najwyżej N-1 razy FOR n=0, 1,, N-2 FOR i=0, 1,, N-2 IF t i > t i+1 t i t i+1

15 Sortowanie bąbelkowe Udoskonalenia (1) Algorytm można zakończyć, jeżeli wewnętrzna pętla nie wykona ani jednej zamiany (wtedy zewnętrzna pętla może być nieskończona) FOR Z = false FOR i=0, 1,, N-2 IF t i > t i+1 t i t i+1 Z = true IF NOT(Z) BREAK

16 Sortowanie bąbelkowe Udoskonalenia (2) Po pierwszym wykonaniu pętli wewnętrznej element największy znajdzie się na samym końcu ("wygra" wszystkie porównania) liczba porównań pętli wewnętrznej może być zmniejszana Można połączyć z (1) FOR n=0, 1,, N-2 FOR i=0, 1,, N-n-2 IF t i > t i+1 t i t i+1 FOR n=n-2, N-1,, 2 FOR i=0, 1,, n IF t i > t i+1 t i t i+1

17 Sortowanie bąbelkowe Udoskonalenia (3) Jeżeli zbiór będzie prawie posortowany, z wyjątkiem ostatniego elementu (np. { 2, 3, 4, 5, 6, 1 }), to algorytm będzie miał złożoność O(n 2 ), chociaż mógłby mieć O(n) gdyby odwrócić kierunek sortowania aby takiemu efektowi zapobiec, wewnętrzna pętla powinna na zmianę biec w górę i w dół zbioru, po coraz krótszym jego fragmencie FOR l = 1 r = N-2 FOR i = l, l+1,, r IF t i > t i+1 => t i t i+1 r r-1 FOR i = r, r-1,, l IF t i > t i+1 => t i t i+1 l l+1

18 Sortowanie gnoma Ciekawy wariant sortowania bąbelkowego, przedstawiany w formie dykteryjki: gnom (niezbyt inteligentny) ma w ogrodzie poukładać doniczki z kwiatami wg wysokości kwiatów; zaczyna od jednej strony (np. od lewej) i porównuje kwiat, przy którym stoi z następnym. Jeżeli są we właściwej kolejności, to przechodzi dalej, jeżeli nie, to zamienia je miejscami i cofa się (chyba że już jest na samym początku)

19 Sortowanie gnoma Ulepszenie Wadą algorytmu jest jałowe powtarzanie porównań podczas poruszania się w prawo, zaraz po cofnięciu się w lewo:

20 Sortowanie gnoma Ulepszenie Wadą algorytmu jest jałowe powtarzanie porównań podczas poruszania się w prawo, po cofnięciu się w lewo Wiadomo, że od bieżącego miejsca aż do miejsca, gdzie dotarł poprzednio, kwiaty są posortowane => powinien to miejsce zaznaczyć (powiesić tam swoją czapkę?) i od razu tam wrócić

21 Sortowanie gnoma Wersja bez ulepszenia p = 0 WHILE p<n-1 IF t p > t p+1 t p t p+1 IF p>0 p p-1 ELSE p p

22 Sortowanie przez wstawianie Przypomina układanie kart w ręku gracza: dzielimy elementy zbioru na część posortowaną (z lewej) i nieposortowaną (z prawej); należy pobrać pierwszy element z części nieposortowanej i przesuwając się w lewo znaleźć miejsce, gdzie powinien się znaleźć. Elementy posortowane, od tego miejsca aż do części nieposortowanej, należy przesunąć w prawo, żeby zrobić miejsce dla elementu wstawianego FOR n = 1, 2,, N-1 temp = t n i = n 1 WHILE i>=0 AND t i >temp t i+1 t i i i-1 t i+1 = temp

23 Sortowanie przez wybieranie Koncepcyjnie zbliżony do sortowania przez wstawianie, ale niestabilny. Najprostsza wersja polega na szukaniu minimum dla nieposortowanej przez kolejne porównania i (ewentualnie) zamiany elementu z początku tej części ze wszystkimi kolejnymi elementami: FOR n = 0, 1,, N-2 FOR i = n+1, n+2, N-1 IF t i <t n t i t n metoda jest niewydajna, ponieważ elementy w nieposortowanej części mają tendencję do układania się w porządku malejącym

24 Sortowanie przez wybieranie Najlepszy wariant sortowania przez wybieranie polega na szukaniu minimum w nieposortowanej (prawej) części zbioru i jednorazowej zamianie miejscami minimum oraz pierwszego elementu tej części: FOR n = 0, 1,, N-2 min = t n poz = n FOR i = n+1, n+2, N-1 IF t i < min min t i poz = i t n t poz

25 Sortowanie złożoność obliczeniowa Wszystkie proste algorytmy mają złożoność średnią O(n 2 ). Np. dla sortowania przez wybieranie, dla N elementów jest (N/2)(N-1) porównań: E E E E E P P P P P P P P P N-1 P N-1

26 Sortowanie medianowe Koncepcja z pozoru słuszna, w praktyce zupełnie nieprzydatna, leżąca u podstaw innych wydajnych algorytmów, a w tym bardzo popularnych (np. quicksort), o złożoności O(nlogn)

27 Sortowanie medianowe Skoro proste sortowanie ma złożoność O(n 2 ) to może zróbmy tak: podzielmy zbiór na dwie połowy i posortujmy je oddzielnie czas powinien być 2 x mniejszy: 2 x (n/2) 2 = ½ n 2 Skoro tak, to czemu tego nie powtórzyć dzieląc połowy tablicy znów na połowy, znowu zyskamy na czasie: 4 x (n/4) 2 = ¼ n 2 Gdyby powtórzyć to parę razy (aż do fragmentu tablicy o rozmiarze 1), to takich kroków będzie log 2 n, a złożoność obliczeniowa n logn

28 Sortowanie medianowe Tak może wyglądać pierwszy etap sortowania: Niestety powstaje pewien drobny problem posortowane oddzielnie tablice po połączeniu wcale nie tworzą tablicy posortowanej

29 Sortowanie medianowe Tak może wyglądać pierwszy etap sortowania: Niestety powstaje pewien drobny problem posortowane oddzielnie tablice po połączeniu wcale nie tworzą tablicy posortowanej Rozwiązanie: załóżmy, że M jest medianą tablicy (tj. dokładnie połowa elementów jest od M mniejsza, a połowa większa) trzeba przerzucić te mniejsze na lewo, a większe na prawo, a dopiero potem sortować

30 Sortowanie medianowe Sortowanie medianowe (pierwszy etap): Wygląda na to, że błąd został poprawiony. Skoro tak, to czynności można powtórzyć, dzieląc tablice znowu na połowy

31 Sortowanie medianowe Sortowanie medianowe (całość):

32 Sortowanie medianowe Sortowanie medianowe (całość): W sortowaniu medianowym sortowanie polega wyłącznie na przerzucaniu elementów pomiędzy połówkami zbioru nie porównuje się elementów z innymi elementami, a wyłącznie z medianą, złożoność obliczeniowa jest najlepsza możliwa, O(nlogn), jest jednak pewien problem

33 Sortowanie medianowe Sortowanie medianowe (całość): W sortowaniu medianowym sortowanie polega wyłącznie na przerzucaniu elementów pomiędzy połówkami zbioru nie porównuje się elementów z innymi elementami, a wyłącznie z medianą, złożoność obliczeniowa jest najlepsza możliwa, O(nlogn), jest jednak pewien problem złożoność szukania mediany jest O(n 2 )

34 Sortowanie medianowe Sortowanie medianowe, przez złożoność szukania mediany O(n 2 ), jest nieopłacalne, jednak sama koncepcja podziału zbioru na połowy leży u podstaw dwóch wydajnych algorytmów sortowania (i pewnej liczby ich odmian i wariacji): Sortowanie przez scalanie (merge sort) "posortujmy te połówki oddzielnie, potem coś wykombinujemy" Szybkie sortowanie (quicksort) "weźmy coś prostszego zamiast tej całej mediany, potem zobaczymy co wyszło"

35 Sortowanie złożoność obliczeniowa Algorytmy bazujące na medianowym mają złożoność średnią O(nlogn). Np. dla sortowania medianowego jest N log 2 N porównań: E E E E E P P P P P P P P log 2 N N-1 Dla sortowania medianowego, sortowania przez scalanie i szybkiego jest log 2 N podziałów zbioru na połowy. Oznacza to log 2 N scaleń (każde N porównań) w merge sort, podobnie log 2 N poziomów rekurencji i przerzucania (małe na lewo duże na prawo, N porównań) w quicksort

36 Sortowanie przez scalanie Sortowanie przez scalanie (merge sort) polega na oddzielnym sortowaniu (hipotetycznie) połówek zbioru, a następnie ich scaleniu, prze wybieranie z lewej i prawej części kolejnych najmniejszych elementów; pomysł jest powielany na kolejnych poziomach podziału zbioru na połowy

37 Szybkie sortowanie Szybkie sortowanie (quicksort) jest najbliższe sortowaniu medianowemu, tyle że zamiast mediany jest brana wartość ją zastępująca zależnie od implementacji: wartość z arytmetycznego środka zbioru (najczęściej) wartość z losowo wybranej pozycji średnia arytmetyczna z kilku pozycji Optymistyczna złożoność obliczeniowa O(nlogn), pesymistyczna O(n 2 ) (bardzo mało prawdopodobna) Zaimplementowana starannie pod kątem wydajności jest 2-3 x szybsza niż merge sort i heap sort; Jest wykonywany "w miejscu", jednak rekurencyjnie - zużywa stos, co w komputerach o małych zasobach jest kłopotliwe Jest niestabilny (istnieją też warianty stabilne)

38 Szybkie sortowanie Szybkie sortowanie (quicksort) implementacja Implementacja pozornie jest prosta: QUICSORT (t, p, k) s = PodzielTablice(t, p, k) QUICKSORT(t, p, s) QUICKSORT(t, s+1, k) W praktyce podział (z przerzuceniem elementów mniejszych od "pseudo-mediany" na prawo i mniejszych od niej na lewo) jest kłopotliwy, ponieważ części tablicy nie muszą być równe (zależą od wartości "pseudo-mediany") Istnieją implementacje wykorzystujące 3 pętle while, dość trudne: WHILE (pp <> kk) WHILE (pp<kk AND t pp <quasimed) pp++ WHILE (kk>pp AND t kk >quasimed) kk t pp t kk

39 Szybkie sortowanie Szybkie sortowanie (quicksort) implementacja Najprostsza implementacja używa jednej pętli for i sprytnej sztuczki: ustawia "pseudomedianę" pomiędzy lewą i prawą częścią tablicy, dzięki czemu dalsze sortowanie tego elementu już nie dotyczy: QUICSORT (t, p, k) IF (p >= k) return; pivotpoint = p + (k-p)/2 pivotvalue = t[pivotpoint] t[pivotpoint] t[k] splitpoint = p FOR i=p, p+1,, k-1 IF t[i]<pivotvalue t[i] t[splitpoint] splitpoint++ t[splipoint] t[k] // koniec rekurencji // środek tablicy // pseudomediana // "środek" na koniec // punkt podziału tabl. // bez "środka"!!! // "środek" na środek QUICSORT (t, p, splitpoint-1) // rekurencja QUICSORT (t, splitpoint+1, k)

40 Sortowanie bez porównywania Sortowanie bez porównywania ma ograniczone zastosowania dla zbiorów o równomiernym rozkładzie kluczy, należących do skończonego zbioru, najlepiej o kluczach całkowitych, przy niewielkiej liczbie kluczy "pustych" wówczas osiąga złożoność O(n) Wadą tych algorytmów jest złożoność pamięciowa przynajmniej O(n)

41 Sortowanie przez zliczanie Sortowanie przez zliczanie (counting sort) Może być stosowana dla zbiorów o równomiernym rozkładzie kluczy należących do skończonego zbioru wówczas osiąga złożoność O(n+k) oraz złożoność pamięciową O(n+k), gdzie n oznacza liczebność zbioru, k rozpiętość wartości kluczy Polega na utworzeniu histogramu, tj. policzeniu liczby wystąpień kluczy o tej samej wartości. Później wartości są wkładane wprost na pozycję wynikającą z histogramu Jest stabilny W skrajnym przypadku (kiedy klucze nie powtarzają się) ma złożoność obliczeniową O(n) i pamięciową O(k) Nie nadaje się do sortowania złożonych danych (np. dane osobowe, alfabetycznie) co prawda klucze da się wyznaczyć, ale rozpiętość jest zbyt duża i złożoność pamięciowa jest nie do przyjęcia

42 Sortowanie kubełkowe Sortowanie kubełkowe (bucket sort) Wariant koncepcji poprzedniej należy podzielić zakres rozpiętości kluczy na k przedziałów (kubełków), następnie przeglądając elementy zbioru przypisywać je do odpowiedniego kubełka na podstawie wartości klucza (złożoność O(n)). Niepuste kubełki trzeba posortować (stosując mniejsze kubełki) itd. Przy równomiernym rozkładzie kluczy całkowitych osiąga złożoność O(n+k) oraz złożoność pamięciową O(n+k) i jest stabilny

43 Bogosort Pseudosortowanie (bogus sort) Jeden z algorytmów zaprojektowanych tak, aby były jak najwolniejsze. Polega na losowym ustawianiu elementów zbioru przy każdej iteracji i sprawdzaniu, czy przypadkiem kolejność nie jest właściwa (niemalejąca). Możliwych permutacji zbioru n elementów jest n!, stąd złożoność obliczeniowa O(n!) Już przy kilkudziesięciu elementach czas sortowania trzeba liczyć w miliardach lat (np. 25! 1, , 50! ) FOR gotowe = true FOR i=0, 1,, N-1 IF t i >t i+1 gotowe = false; BREAK IF gotowe BREEAK FOR i=n-1, N-2,, 1 t i t random(i)

Struktury Danych i Złożoność Obliczeniowa

Struktury Danych i Złożoność Obliczeniowa Struktury Danych i Złożoność Obliczeniowa Zajęcia 2 Algorytmy wyszukiwania, sortowania i selekcji Sortowanie bąbelkowe Jedna z prostszych metod sortowania, sortowanie w miejscu? Sortowanie bąbelkowe Pierwsze

Bardziej szczegółowo

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

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

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. Podstawy C# Przykłady algorytmów

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

Algorytm i złożoność obliczeniowa algorytmu

Algorytm 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ół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

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

Zasady analizy algorytmów

Zasady analizy algorytmów Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. 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 Sortowanie IS/IO, WIMiIP

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Danuta Szeliga AGH Kraków Spis treści I 1 Wstęp 2 Metody proste 3 Szybkie metody sortowania 4 Algorytmy hybrydowe Sortowanie hybrydowe Sortowanie introspektywne

Bardziej szczegółowo

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

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

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

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

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe Algorytmy sortujące sortowanie kubełkowe, sortowanie grzebieniowe Sortowanie kubełkowe (bucket sort) Jest to jeden z najbardziej popularnych algorytmów sortowania. Został wynaleziony w 1956 r. przez E.J.

Bardziej szczegółowo

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

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego

Bardziej szczegółowo

Sortowanie przez scalanie

Sortowanie przez scalanie Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie

Bardziej szczegółowo

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

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

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

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

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce

Bardziej szczegółowo

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

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

Wykład 5. Sortowanie w czasie liniowologarytmicznym

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

Bardziej szczegółowo

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

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

Wykład 2. Poprawność algorytmów

Wykład 2. Poprawność algorytmów Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm

Bardziej szczegółowo

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe.

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe. 1 Tematy wykładu: problem sortowania sortowanie przez wybór (SelectionSort) sortowanie przez wstawianie (InsertionSort) sortowanie przez złaczanie (MergeSort) struktura danych list dowiązaniowych Input:

Bardziej szczegółowo

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa Łukasz Przywarty 171018 Data utworzenia: 24.03.2010r. Mariusz Kacała 171058 Prowadzący: prof. dr hab. inż. Adam Janiak oraz dr inż. Tomiasz Krysiak Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Bardziej szczegółowo

Sortowanie. LABORKA Piotr Ciskowski

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

Bardziej szczegółowo

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

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Algorytmy sortujące 1

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 3 2 Złożoność obliczeniowa algorytmów Notacja wielkie 0 Notacja Ω i Θ Algorytm Hornera Przykłady rzędów

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Zaawansowane algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Sortowanie za pomocą malejących przyrostów metoda Shella Metoda jest rozwinięciem metody sortowania

Bardziej szczegółowo

PODSTAWY INFORMATYKI wykład 5.

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

Bardziej szczegółowo

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. Dziel i rządź. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel Wstęp do programowania Dziel i rządź Piotr Chrząstowski-Wachtel Divide et impera Starożytni Rzymianie znali tę zasadę Łatwiej się rządzi, jeśli poddani są podzieleni Nie chodziło im jednak bynajmniej o

Bardziej szczegółowo

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

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS Czas sortowania w milisekundach Czas sortowania w milisekundach Sortowanie Porównanie, Counting Sort, Shell Sort, Bubble Sort 4 Porównanie sortowao: HS, CS, Shs, BS 35 3 25 2 15 5 Counting Sort Shell Sort

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59 Cel wykładów z programowania

Bardziej szczegółowo

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze, Oznaczenia: Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze, to interesuje nas złożoność obliczeniowa

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Efektywna metoda sortowania sortowanie przez scalanie

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

Bardziej szczegółowo

Przykładowe sprawozdanie. Jan Pustelnik

Przykładowe sprawozdanie. Jan Pustelnik Przykładowe sprawozdanie Jan Pustelnik 30 marca 2007 Rozdział 1 Sformułowanie problemu Tematem pracy jest porównanie wydajności trzech tradycyjnych metod sortowania: InsertionSort, SelectionSort i BubbleSort.

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

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

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

Złożoność algorytmów. Wstęp do Informatyki Złożoność algorytmów Złożoność pamięciowa - liczba i rozmiar struktur danych wykorzystywanych w algorytmie Złożoność czasowa - liczba operacji elementarnych wykonywanych w trakcie przebiegu algorytmu Złożoność

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe 15 stycznia 2019 Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r P Jaka wartość zostanie zwrócona

Bardziej szczegółowo

Sortowanie przez wstawianie Insertion Sort

Sortowanie przez wstawianie Insertion Sort Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,

Bardziej szczegółowo

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

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

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

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for. Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Podstawowe struktury danych

Podstawowe struktury danych Podstawowe struktury danych 1) Listy Lista to skończony ciąg elementów: q=[x 1, x 2,..., x n ]. Skrajne elementy x 1 i x n nazywamy końcami listy, a wielkość q = n długością (rozmiarem) listy. Szczególnym

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 3a: Złożoność obliczeniowa algorytmów http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Złożoność obliczeniowa i asymptotyczna

Bardziej szczegółowo

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

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

Złożoność Obliczeniowa Algorytmów

Złożoność Obliczeniowa Algorytmów Algorytmów Pożądane cechy dobrego algorytmu Dobry algorytm mający rozwiązywać jakiś problem powinien mieć 2 naturalne cechy: 1 (poprawność) zwracać prawidłowy wynik (dokładniej: zgodność z warunkiem końcowym

Bardziej szczegółowo

Laboratoria nr 1. Sortowanie

Laboratoria nr 1. Sortowanie Laboratoria nr 1 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) 4. Sortowanie przez zliczanie (CS) 5. Sortowanie kubełkowe (BS) 6. Sortowanie

Bardziej szczegółowo

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

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

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

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

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu

Bardziej szczegółowo

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

Technologie informacyjne Wykład VII-IX

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne

Bardziej szczegółowo

Algorytmy i Struktury Danych. (c) Marcin Sydow. Introduction. QuickSort. Sortowanie 2. Limit. CountSort. RadixSort. Summary

Algorytmy i Struktury Danych. (c) Marcin Sydow. Introduction. QuickSort. Sortowanie 2. Limit. CountSort. RadixSort. Summary Sortowanie 2 Zawartość wykładu: Własność stabilności algorytmów sortujących algorytm sortowania szybkiego () czy można sortować szybciej niż ze złożonością Θ(n log(n))? algorytm sortowania przez zliczanie

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy i Struktury Danych, 2. ćwiczenia Algorytmy i Struktury Danych, 2. ćwiczenia 2015-10-09 Spis treści 1 Szybkie potęgowanie 1 2 Liczby Fibonacciego 2 3 Dowód, że n 1 porównań jest potrzebne do znajdowania minimum 2 4 Optymalny algorytm do

Bardziej szczegółowo

Problemy porządkowe zadania

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

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

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych

Bardziej szczegółowo

Sortowanie zewnętrzne

Sortowanie zewnętrzne Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Sortowanie zewnętrzne 1 Wstęp Bardzo często

Bardziej szczegółowo

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego. Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego

Bardziej szczegółowo

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

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2 Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania

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

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

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

Algorytmy i struktury danych Matematyka III sem.

Algorytmy i struktury danych Matematyka III sem. Algorytmy i struktury danych Matematyka III sem. 30 godz. wykł. / 15 godz. ćw. / 15 godz. projekt dr inŝ. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura T.H. Cormen i inni, Wprowadzenie

Bardziej szczegółowo

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

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4 Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Nr 4 Algorytmy sortowania zewnętrznego 1 Wstęp Bardzo często przy rozwiązywaniu praktycznych

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻ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ółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych ĆWICZENIE 2 - WYBRANE ZŁOŻONE STRUKTURY DANYCH - (12.3.212) Prowadząca: dr hab. inż. Małgorzata Sterna Informatyka i3, poniedziałek godz. 11:45 Adam Matuszewski, nr 1655 Oliver

Bardziej szczegółowo

1. Analiza algorytmów przypomnienie

1. Analiza algorytmów przypomnienie 1. Analiza algorytmów przypomnienie T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Wprowadzenie do algorytmów, rozdziały 1-4 Wydawnictwa naukowo-techniczne (2004) Jak mierzyć efektywność algorytmu?

Bardziej szczegółowo