ˇ razen ı rychlejˇ s ı neˇ z kvadratick e Karel Hor ak, Petr Ryˇsav y 20. dubna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Podobné dokumenty
ALG 09. Radix sort (přihrádkové řazení) Counting sort. Přehled asymptotických rychlostí jednotlivých řazení. Ilustrační experiment řazení

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

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

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

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

Pokročilé řazení. Karel Richta a kol. Přednášky byly připraveny s pomocí materiálů, které vyrobili Marko Berezovský a Michal Píše

Pole a kolekce. v C#, Javě a C++

Sada 1 - Základy programování

Elegantní algoritmus pro konstrukci sufixových polí

Algoritmizace řazení Bubble Sort

Algoritmizace prostorových úloh

ALG 14. Vícedimenzionální data. Řazení vícedimenzionálních dat. Experimentální porovnání řadících algoritmů na vícedimenzionálních datech

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Rekurze a rychlé třídění

IB111 Úvod do programování skrze Python

Dynamické datové struktury III.

Stromy, haldy, prioritní fronty

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

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

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

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

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

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

Algoritmy I, složitost

Různé algoritmy mají různou složitost

a) b) c) Radek Mařík

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

IB111 Úvod do programování skrze Python

Datové struktury 2: Rozptylovací tabulky

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

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

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

Numerická stabilita algoritmů

SORT STABILITY

II. Úlohy na vložené cykly a podprogramy

Základy programování (IZP)

Cvičení MI-PRC I. Šimeček

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

Doba běhu daného algoritmu/programu. 1. Který fragment programu z následujících dvou proběhne rychleji?

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Operační systémy 2: Zápočtové úkoly

STACK

TGH07 - Chytré stromové datové struktury

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: (Tučná čísla indikují počet neuspěvších (z 50) v jednotlivých otázkách) 1.

MIDTERM D. Příjmení a jméno:

Návrh designu: Radek Mařík

Radek Mařík

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

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

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

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

2. lekce Algoritmus, cyklus Miroslav Jílek

IB111 Úvod do programování 1 / 62

Návrh Designu: Radek Mařík

Bubble sort. příklad. Shaker sort

v nichž byly zadány, s možnou výjimkou konstantně mnoha tzv. pracovních

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

ALGORITMIZACE PROGRAMOVÁNÍ VT3/VT4

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY ZADÁNÍ NEOTVÍREJTE, POČKEJTE NA POKYN!

Techniky návrhu algoritmů

Jednoznačné a nejednoznačné gramatiky

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

Obor: Informatika Únor 2006 Okruh: Základy matematiky Otázka: 1. Jméno: Bodů:...

Vysvětlete funkci a popište parametry jednotlivých komponent počítače a periferních zařízení.

8. Geometrie vrací úder (sepsal Pavel Klavík)

Cykly a pole

1. Databázové systémy (MP leden 2010)

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

Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Základní algoritmy v praxi

Algoritmy na ohodnoceném grafu

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Datové struktury. alg12 1

Algoritmizace a programování

Binární vyhledávací stromy II

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:

2. Složitost, grafové algoritmy (zapsal Martin Koutecký)

Asymptotická složitost algoritmů

COMPLEXITY

CVIČNÝ TEST 24. OBSAH I. Cvičný test 2. Mgr. Kateřina Nováková. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15

Algoritmy II. Otázky k průběžnému testu znalostí

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

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Algoritmizace prostorových úloh

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

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Digitální učební materiál

Hledání k-tého nejmenšího prvku

Algoritmizace prostorových úloh

Řazení řádků ve vzestupném pořadí (A až Z nebo 0 až 9) nebo sestupném pořadí (Z až A nebo 9 až 0)

Spojový seznam. Jan Kybic.

Transkript:

řazení rychlejší než kvadratické Karel Horák, Petr Ryšavý 20. dubna 2016 Katedra počítačů, FEL, ČVUT

Příklad 1 Která z následujících posloupností představuje haldu uloženou v poli? 1. 9 5 4 6 3 2. 5 4 2 3 9 3. 3 8 9 5 6 4. 5 1 8 9 1 5. 1 3 6 5 4 1

Příklad 2 V haldě, jejíž vrchol obsahuje minimální prvek haldy, máme najít prvek s maximálním kĺıčem. Jaká je asymptotická složitost této akce? Umíte vyřešit problém lépe (ne nutně asymptoticky) než v n operacích. 3

Příklad 3 Je dáno n (n N, n 2) navzájem různých celočíselných kĺıčů a prázdná halda. Všechny kĺıče vložíme jeden po druhém v náhodném pořadí do dané haldy. 1. Jaká je asymptotická složitost tohoto procesu? 2. Je možné, že pro některé speciální pořadí kĺıčů bude asymptotická složitost menší nebo větší než v náhodném případě? 5

Příklad 4 Danou haldu s n prvky máme rozdělit na dvě haldy, tak že každá bude mít n 2. Předpokládejme, že původní halda je uložena v poli délky n a nové haldy budou uloženy ve dvou připravených poĺıch délky n 2. Navrhněte, jak rozdělit haldu v čase Θ(n). 7

Příklad 5 Pole n prvků uspořádané v rostoucím pořadí lze považovat za haldu. Z této operace odstraníme standardní operací deletetop() její vrchol. Určete za jakých okolností je možné, aby výsledné pole bylo po uvedené operaci opět celé uspořádané. 9

Příklad 6 Merge sort řadí pole šesti čísel: 8, 1, 7, 6, 4, 2. Jak bude toto pole vypadat před provedením poslední operace merge? 11

Příklad 7 Jaká je asymptotická složitost algoritmu zvaného 4-way merge sort. Algoritmus funguje jako standardní merge sort, pouze pole rozkládá na 4 části místo dvou. 13

Příklad 8 Jaká bude asymptotická složitost řazení, předložíme-li Heap sort-u vzestupně seřazenou posloupnost délky n. 15

Příklad 9 Je heap sort stabilní řazení? Proč? Pokud není, uměli byste upravit heap sort tak, aby byl stabilní? 17

Příklad 10 Zadanou posloupnost v poli seřad te ručně pomocí heap sortu. Registrujte stav v poli po každém kroku. Nejprve po každé opravě částečné haldy od prostředku pole směrem k začátku, tj. při první fázi. Potom také po každé opravě haldy a přenesení prvku z vrcholu haldy za konec haldy. 23 29 27 4 28 17 1 24 6 30 19 19

Příklad 11 Vysvětlete, jak je nutno modifikovat Heap sort, aby po jeho skončení pole obsahovalo prvky seřazené vzestupně. Algoritmus musí být stejně rychlý, nejen asymptoticky, a nesmí používat žádné další datové struktury nebo proměnné. 20

Příklad 12 Poskytneme-li Quick Sort-u (Q) a Merge sort-u (M) stejná data k seřazení, platí 1. Q bude vždy asymptoticky rychlejší než M 2. M bude vždy asymptoticky rychlejší než Q 3. někdy může být Q asymptoticky rychlejší než M 4. někdy může být M asymptoticky rychlejší než Q 5. Q i M budou vždy asymptoticky stejně rychlé 22

Příklad 13 Pomocí Radix sort-u řadíme pole n řetězců, každý řetězec má kladnou délku k. Jaká je asymptotická složitost tohoto řazení? 24

Příklad 14 Následující posloupnost řetězců je nutno seřadit pomocí Radix Sortu (přihrádkového řazení). Proved te první průchod algoritmu danými daty a napište, jak budou po tomto prvním průchodu seřazena. AACA BACC CAAA CBBB CCCA BCBB BABA BBCA 26

Příklad 15 Pole A obsahuje téměř seřazené řetězce, pole B obsahuje řetězce stejné délky, ale zcela neseřazené. Radix sort seřadí asymptoticky 1. A rychleji než B 2. B rychleji než A 3. A stejně rychle jako B, použije více paměti pro řazení A 4. A stejně rychle jako B, použije více paměti pro řazení B 5. A stejně rychle jako B a použití paměti bude stejné 28

Příklad 16 Radix sort řadí dané pole řetězců. Napište, budou řetězce rozděleny do přihrádek po prvním průchodu algoritmu tj, po seřazení podle posledního znaku. dda, bab, ddc, aaa, bcd, dbc, bbb, add, ccd, dab, bbc 30

Příklad 17 Každé kladné číslo typu int lze interpretovat jako posloupnost čtyř znaků reprezentujích jeho zápis v soustavě o základu 256. Jak je nutno modifikovat Radix sort, aby mohl řadit pole takto interpretovaných celých čísel? Bude to časově/pamět ově výhodné? Pro jak veliká pole? 32

Příklad 18 Uvažujme pole obsahující 1000 navzájem různých čísel v pohyblivé řádové čárce. Hodí se counting sort pro seřazení tohoto pole? 33