NPRG030 Programování I, 2018/19 1 / :03:07

Podobné dokumenty
DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Algoritmizace prostorových úloh

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Základy algoritmizace a programování

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Prioritní fronta, halda

Základy řazení. Karel Richta a kol.

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_26 04

IB111 Úvod do programování skrze Python

Prohledávání do šířky = algoritmus vlny

Základní datové struktury III: Stromy, haldy

Stromy, haldy, prioritní fronty

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Anotace. pointery (pars prima). Martin Pergel,

Algoritmizace řazení Bubble Sort

Maturitní téma: Programovací jazyk JAVA

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Třídění a vyhledávání Searching and sorting

ALGORITMY A DATOVÉ STRUKTURY

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Digitální učební materiál

Rekurze a rychlé třídění

Stromy. Jan Hnilica Počítačové modelování 14

Anotace. Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj

Sada 1 - Základy programování

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Předmět: Algoritmizace praktické aplikace

Binární soubory (datové, typované)

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

Úvod do programování

Digitální učební materiál

Dynamické datové struktury III.

NPRG030 Programování I, 2018/19 1 / :25:37

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:

IB111 Úvod do programování skrze Python

Složitost UPR 2008/09 1

TGH07 - Chytré stromové datové struktury

Časová a prostorová složitost algoritmů

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Algoritmy I. Třídění ALGI 2010/2011

Algoritmy výpočetní geometrie

Algoritmy I, složitost

Návrh Designu: Radek Mařík

Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort.

Šablony, kontejnery a iterátory

Dynamické programování

NPRG030 Programování I, 2017/18 1 / :22:16

Paralelní grafové algoritmy

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

13. Třídící algoritmy a násobení matic

Rekurzivní algoritmy

NPRG030 Programování I, 2016/17 1 / :58:13

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Digitální učební materiál

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Bubble sort. příklad. Shaker sort

Binární vyhledávací stromy pokročilé partie

každého programátora, a tak není divu, že třídicí algoritmy jsou jedny z nejstudovanějších.

TGH07 - Chytré stromové datové struktury

3 Vyhledávání, třídící algoritmy

Digitální učební materiál

Digitální učební materiál

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace

Anotace. Jednotky (tvorba a využití), struktury (typ record),

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Binární vyhledávací stromy

Řazení. Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

3. Derivace funkce Definice 3.1. Nechť f : R R je definována na nějakém okolí U(a) bodu a R. Pokud existuje limita f(a + h) f(a) lim

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

Praktická cvičení algoritmů

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

ADT prioritní fronta. Haldy. Další operace nad haldou. Binární halda. Binomické stromy. Časová složitost jednotlivých operací.

TGH05 - Problém za milion dolarů.

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Algoritmy na ohodnoceném grafu

Algoritmy a datové struktury

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Strom

Binární vyhledávací strom. Proč binární? Vyhledávání

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

1 Úvod do Turbo Pascalu

3 Algoritmy řazení. prvku a 1 je rovněž seřazená.

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Datový typ prioritní fronta Semestrální práce z předmětu 36PT

Transkript:

NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07

Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování I, 2018/19 2 / 20 3. 12. 2018 09:03:07

Třídění přímým výběrem Algoritmus: 1. Vyber prvek s nejmenší hodnotou (nejmenším klíčem) 2. Vyměň ho s prvkem na prvním místě pole 3. Totéž opakuj pro zbývající prvky pole NPRG030 Programování I, 2018/19 3 / 20 3. 12. 2018 09:03:07

Třídění přímým vkládáním Algoritmus: Pole rozdělíme na dvě části zdrojová a cílová (setříděná). Na začátku cílová část je a[1], zdrojová a[2]..a[n] Krok rozšíření cílové části a[1]..a[i-1] o jeden prvek: - zjisti, kam patří prvek a[i] - zařaď ho tam (tj. případně odsuň prvky cílové (setříděné) části, které budou za ním) NPRG030 Programování I, 2018/19 4 / 20 3. 12. 2018 09:03:07

Bublinkové třídění Algoritmus: 1. Jsou-li v poli dva sousední prvky ve špatném pořadí, vyměň je. 2. Opakuj krok 1. - N-krát - (N-1)-krát -, dokud je co vyměňovat. NPRG030 Programování I, 2018/19 5 / 20 3. 12. 2018 09:03:07

Třídění přetřásáním Algoritmus: Stejný jako u bublinkového třídění, jen jiný způsob vyhledávání chybných dvojic. NPRG030 Programování I, 2018/19 6 / 20 3. 12. 2018 09:03:07

Další zlepšení Bublinkového třídění: hranice setříděných okrajů Shellovo třídění Nejdříve porovnávat a vyměňovat vzdálené prvky, pak zmenšovat vzdálenost až k 1. NPRG030 Programování I, 2018/19 7 / 20 3. 12. 2018 09:03:07

Stromové třídění Idea: Získávat informace tak, aby se nevztahovaly všechny k jednomu prvku. Algoritmus: 1. Sestrojit strom => nejmenší prvek 2. Vyloučit nejmenší prvek a obnovit strom. NPRG030 Programování I, 2018/19 8 / 20 3. 12. 2018 09:03:07

Třídění haldou Cíl: Nepotřebovat 2N-1 paměťových jednotek Definice HALDA: - binární strom - všechny hladiny jsou zcela zaplněny, až na poslední, která je zaplněná zleva - pro každý uzel: hodnota <= hodnota v synovském uzlu!!!! POZOR! POZOR! Zkouším Zkouším!!!! Třídění haldou: - ze všech prvků vytvoř haldu - dokud není halda prázdná, odeber prvek z kořene Uložení haldy v poli... NPRG030 Programování I, 2018/19 9 / 20 3. 12. 2018 09:03:07

Vytvoření haldy I. procedure VytvorHaldu( L,R: index ); var i,j: index; x: Prvek; begin i := L; j := 2*i; x := a[i]; { hodnota otce } while j <= R do { levý syn je ještě v haldě } begin if j+1 <= R then { pravý syn také... } if a[j] > a[j+1] then {...a je menší! } j := j+1; if x <= a[j] then break; { OK } a[i] := a[j]; i := j; j := 2*i { vyměním } end; a[i] := x { až teď zapíšeme hodnotu otce } end; NPRG030 Programování I, 2018/19 10 / 20 3. 12. 2018 09:03:07

Vytvoření haldy II. L := n div 2+1; while L > 1 do begin Dec( L ); VytvorHaldu( L,n ) end NPRG030 Programování I, 2018/19 11 / 20 3. 12. 2018 09:03:07

Třídění sléváním Idea: 1. Pomocí N porovnání dovedeme spojit dvě setříděné posloupnosti po N/2 do setříděné posloupnosti (délky N) 2. 1-prvková posloupnost JE setříděná. Algoritmus: Posloupnost rozdělíme na dvě části, ty setřídíme*) a potom slijeme. --------------------------- *) stejným algoritmem NPRG030 Programování I, 2018/19 12 / 20 3. 12. 2018 09:03:07

Quicksort Idea: Posloupnost rozdělíme na části, které setřídíme týmž algoritmem. Jednoprvková posloupnost je setříděná. Algoritmus na setřídění úseku pole: - menší prvky dát do levé části - větší prvky dát do pravé části - setřiď levou část (není-li prázdná) - setřiď pravou část (není-li prázdná) Co znamená menší/větší prvky? menší/větší než určená hodnota (PIVOT) metoda Rozděl a panuj ( Divide & Impera ) NPRG030 Programování I, 2018/19 13 / 20 3. 12. 2018 09:03:07

Quicksort - kód procedure QuickSort( zac,kon: index ); var M,pom: Hodnota; begin x := zac; y := kon; M :=...(pivot) repeat while A[x] < M do Inc( x ); while A[y] > M do Dec( y ); if x<=y then begin pom := A[x]; A[x] := A[y]; A[y] := pom; Inc( x ); Dec( y ) end until x > y; if zac < y then QuickSort( zac,y ); if x < kon then QuickSort( x, kon ) end; NPRG030 Programování I, 2018/19 14 / 20 3. 12. 2018 09:03:07

QuickSort III. - složitost Volba pivota Složitost v nejhorším případě Volba pivota prakticky NPRG030 Programování I, 2018/19 15 / 20 3. 12. 2018 09:03:07

Rozděl a panuj (Divide & Impera) Řešení úlohy tím, že ji rozdělíme na stejné úlohy menšího rozměru a ty zase dělíme... až k úlohám, které mají snadné řešení. Příklady Quicksort Třídění sléváním výpočet hodnoty výrazu rozdělením na podvýrazy (rychlé) násobení matic (rychlá) Fourierrova transformace NPRG030 Programování I, 2018/19 16 / 20 3. 12. 2018 09:03:07

Hledání k-tého nej...šího prvku z N postupným vybíráním minima/maxima pomocí haldy lineární algoritmus NPRG030 Programování I, 2018/19 17 / 20 3. 12. 2018 09:03:07

Složitost úlohy je nejmenší složitost algoritmu ze všech algoritmů řešících tuto úlohu Složitost úlohy vnitřního třídění založeného na porovnávání dvou prvků je O(N logn). NPRG030 Programování I, 2018/19 18 / 20 3. 12. 2018 09:03:07

Přihrádkové třídění (bucket sort)...s více průchody (radix sort). NPRG030 Programování I, 2018/19 19 / 20 3. 12. 2018 09:03:07

NPRG030 Programování I, 2018/19 20 / 20 3. 12. 2018 09:03:07