Maturitní téma: Programovací jazyk JAVA

Podobné dokumenty
Algoritmizace prostorových úloh

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

Zadání k 2. programovacímu testu

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

Složitost UPR 2008/09 1

Základní datové struktury

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

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

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

Lineární datové struktury

Datové struktury. alg12 1

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

TÉMATICKÝ OKRUH TZD, DIS a TIS

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

Anotace. Spojové seznamy, haldy. AVL-stromy, A-B stromy. Martin Pergel,

Dynamické datové struktury III.

Základy algoritmizace a programování

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

Prioritní fronta, halda

Algoritmizace řazení Bubble Sort

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

vyhledávací stromové struktury

Algoritmizace prostorových úloh

Spojová implementace lineárních datových struktur

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Dynamické datové struktury I.

Algoritmizace prostorových úloh

Sada 1 - Základy programování

ABSTRAKTNÍ DATOVÉ TYPY

Universita Pardubice Fakulta elektrotechniky a informatiky. Mikroprocesorová technika. Semestrální práce

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

Šablony, kontejnery a iterátory

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

Šablony, kontejnery a iterátory

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Kolekce, cyklus foreach

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

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

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

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

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

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

TGH07 - Chytré stromové datové struktury

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

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

IB111 Úvod do programování skrze Python

Lineární datové struktury

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í

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.

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

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

Konstruktory a destruktory

Datové struktury 1: Základní datové struktury

1 Úvod do Turbo Pascalu

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

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

Rekurze a rychlé třídění

Složitosti základních operací B + stromu

5 Rekurze a zásobník. Rekurzivní volání metody

ADT STROM Lukáš Foldýna

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Předmět: Algoritmizace praktické aplikace

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

Anotace. pointery (pars prima). Martin Pergel,

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

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

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

Da D to t v o é v ty t py IB111: Datové typy

Abstraktní datové typy

Číselné soustavy a převody mezi nimi

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

IB111 Úvod do programování skrze Python

Programování v C++ 2, 4. cvičení

ADT/ADS = abstraktní datové typy / struktury

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

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

Základní informace o předmětu Otázka:

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

Stromy, haldy, prioritní fronty

Zásobník (LIFO) Opakem zásobníku LIFO je fronta FIFO (First In, First Out první dovnitř, první ven)

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

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

Algoritmy a datové struktury

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.

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

OZD. Organizace a zpracování dat. učební text

Časová složitost algoritmů

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

5 Orientované grafy, Toky v sítích

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

Praktická cvičení algoritmů

Datové typy a struktury

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Problém, algoritmus, program. Vykonání programu

Konvexní obal a množina

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Transkript:

Maturitní téma: Programovací jazyk JAVA Insert Sort (třídění vkládáním) 1. Jako setříděnou část označíme první prvek pole. Jako nesetříděnou část označíme zbytek pole. 2. Vezmeme první (libovolný) prvek z nesetříděné části. 3. Tento prvek postupně porovnáváme s prvky v setříděnné části a vložíme jej sem tak, aby tato část zůstala setříděná. 4. Je-li v nesetříděné části nějaký prvek pokračujeme krokem 2. Jinak algoritmus končí. Příklad: 12 44 55 42 94 18 6 67 12 42 44 55 94 18 6 67 12 42 44 55 94 18 6 67 12 18 42 44 55 94 6 67 6 12 18 42 44 55 94 67 6 12 18 42 44 55 67 94

Binary Insert Sort (třídění binárním vyhledáváním) 1. Jako setříděnou část označíme první prvek pole. Jako nesetříděnou část označíme zbytek pole. 2. Vezmeme první (libovolný) prvek z nesetříděné části. 3. Prvek vložíme na do setříděné části tak, že pozici nalezneme pomocí binárního vyhledání. 4. Je-li v nesetříděné části nějaký prvek pokračujeme krokem 2. Jinak algoritmus končí. Select Sort (třídění přímým výběrem) 1. Najdeme nejmenší prvek v poli. 2. Zaměníme ho s prvkem na první pozici. Setříděná část teď obsahuje pouze tento jeden prvek. Zbytek pole je nesetříděná část. 3. V nesetříděné části najdeme nejmenší prvek a vyměníme jej s prvním prvkem v nesetříděné části. Tím se tento prvek dostane do setříděné části. 4. Je-li v nesetříděnné části více jak jeden prvek pokračujeme krokem 2. 5. Obsahuje-li nesetříděná část pouze jeden prvek algoritmus končí. Příklad 6 55 12 42 94 18 44 67 6 12 55 42 94 18 44 67 6 12 18 42 94 55 44 67 6 12 18 42 94 55 44 67 6 12 18 42 44 55 94 67 6 12 18 42 44 55 94 67 6 12 18 42 44 55 67 94

Shell Sort (třídění vkládáním s ubývajícím krokem) 1. Zvolíme krok 2. V i-tém kroku třídíme prvky ve vzdélenosti h_i, pro i = t, t-1,...,0; h_i+1 > h_i; h1 = 0; t >0 Příklad: 44 18 6 42 94 55 12 67 6 18 12 42 44 55 94 67 6 18 12 42 44 55 67 94

BubbleSort Příklad: 1. Posloupnost rozdělíme na setříděnou a nesetříděnou část. 2. Porovnáváme sousední prvky v nesetříděné části. Pokud nejsou ve správném pořadí, tak je prohodíme. 3. Opakujeme krok 2, dokud nesetříděnné část obsahuje více jak jeden prvek. 44 12 42 55 18 6 67 94 12 42 44 18 6 55 67 94 12 42 18 6 44 55 67 94 12 18 6 42 44 55 67 94 12 6 18 42 44 55 67 94 6 12 18 42 44 55 67 94 6 12 18 42 44 55 67 94

QuickSort Příklad: 1. Tříděné pole rozdělíme pokud možno na dvě stejné disjunktní části. Rozdělení realizujeme tak, že zvolíme prvek tříděného pole (pivota). 2. Prvky vlevo od pivota by měli být menší než pivot a prvky vpravo od pivota by měli být větší jak pivot. 3. Procházíme levou část než narazíme na prvek větší než pivot. 4. Procházíme pravou část než narazíme na prvek menší než pivot. 5. Tyto prvky prohodíme. Pokud takové prvky neexistují prohazujeme pivota. 6. Rekurzivně pak dotřídíme pravou část pole a levou část pole. 6 55 12 42 94 18 44 67 6 55 12 42 94 18 44 67 6 18 12 42 94 55 44 67 6 18 12 42 94 55 44 67 6 18 12 42 44 55 94 67 6 18 12 42 44 55 94 67 6 18 12 42 44 55 67 94 6 18 12 42 44 55 67 94 6 18 12 42 44 55 67 94 6 18 12 42 44 55 67 94

RadixSort 1. Představíme so čísla ve dvojkové soustavě o stejném počtu bitů. 2. Zvolíme číslo 2 b. 3. Procházíme pole zleva a hledáme prvek začínající jedničkovým bitem. (větší jak 2 b ) 4. Procházíme pole zprava a hledáme prvek začínající nulovým bitem.(menší jak 2 b ) 5. Prvky prohodíme. 6. Rekurzivně dotřídíme zbytek pole. DobSort Jedná se o spojení ShellSortu a BubbleSortu. PigeonholeSort (přihrádkové třídění) 1. Zavedeme m prázdných přihrátek. 2. Procházíme posloupnost prvků zleva a prvek a i dáme do přihrátky a i 3. Zpojíme všechny přihrátky.

Pole Statické pole Statickým polem nazýváme pole, které v průběhu zpracování nemůže měnit počet prvků. Dynamické pole Dynamickým polem nazýváme pole, které v průběhu zpracování může měnit počet prvků. Setříděné pole Je pole, které i po vložení nového prvku zůstává setříděné

Zásobník U zásobníku máme přesně dán způsob vkládání a mazání prvků. U zásobníku je uplatněn princip LIFO (last-in, first-out) tzn. prvek, který vložíme jako poslední, bude jako první smazán(vyjmut). Operace vložení do zásobníku se nazývá Push, operace vyjmutí se nazývá Pop. Zásobník dále implementuje tyto metody Empty - zjistí, zda je zásobník prázdný, Top - vrací prvek na vrcholu (poslední prvek), tento prvek ale nemaže. Pro implementaci Zásobníku používáme jeden ukazatel vrchol zásobníku (stack pointer) - ukazuje na aktuální (poslední) prvek v zásobníku.

Fronta Fronta je další strukturou s přesně daným způsobem vkládání a mazání prvků. U fronty je uplatněn princip FIFO (first-in, first-out) tzn. prvek, který vložíme jako první, bude jako první smazán(vyjmut). Operace vložení do fronty se nazývá Put, operace odebrání se nazývá Get. Fronta dále implementuje tyto metody Empty - zjistí, zda je fronta prázdná. Pro implementaci fronty používáme dvou ukazatelů hlavu fronty (head) - ukazuje na prvek, který je na řadě pro odebrání. Ocas fonty (tail) - ukazuje na poslední prvek ve frontě.

MergeSort Tento algoritmus aplikuje postup "rozděluj a panuj" Algoritmus Příklad 1. Rozdělíme pole na dvě stejné části A a B. 2. Části A a B seřadíme. 3. Tyto seřazené části spojíme následujícím způsobem: o je-li prvek a z A menší nebo roven prvku b z B pak do výsledné množiny zapíšeme prvek a z A o o jinak zapíšeme do výsledné množiny prvek b z B obsahují-li množiny A a B nějaké prvky provádíme stále předchozí dva kroky