Sada 1 - Základy programování

Podobné dokumenty
Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Algoritmizace řazení Bubble Sort

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Algoritmizace prostorových úloh

Sada 2 Microsoft Word 2007

Sada 1 - PHP. 03. Proměnné, konstanty

Sada 2 - MS Office, Excel

Bubble sort. příklad. Shaker sort

Digitální učební materiál

Sada 1 - PHP. 05. Větvení

Sada 2 Microsoft Word 2007

Sada 2 Microsoft Word 2007

Sada 2 Microsoft Word 2007

Sada 2 Microsoft Word 2007

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

Sada 2 - MS Office, Excel

Sada 2 Stavební provoz

Digitální učební materiál

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Sada 1 Matematika. 01. Množiny - úvod

Sada 2 Microsoft Word 2007

Sada 1 CAD Písmo v AutoCADu

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Sada 2 Microsoft Word 2007

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

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

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

Sada 1 - Elektrotechnika

Sada 3 CAD3. 4. CADKON DT+ Okna

Sada 1 - Základy programování

Sada 3 CAD3. 6. CADKON DT+ Dveře

Sada 1 CAD Kótování kótovací styl

Sada 1 Matematika. 06. Finanční matematika - úvod

IB111 Úvod do programování skrze Python

Ekonomika Inflace

Sada 3 Inženýrské stavby

Sada 1 Matematika. 04. Nekonečné řady

Sada 2 - MS Office, Excel

Sada 2 Geodezie II. 13. Základní vytyčovací prvky

Sada 1 - PHP. 09. Formuláře

Sada 2 Klempířská technologie

Úvod do programování

Sada 1 - PHP. 14. Úvod do jazyka SQL

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

Sada 2 - MS Office, Excel

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

Sada 2 - MS Office, Excel

Sada 2 Stavební provoz

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Programovací jazyk Pascal

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

5. Vyhledávání a řazení 1

Sada 1 - Elektrotechnika

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

Závěrečná zkouška z informatiky 2011

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Sada 1 Geodezie I. 13. Měření vodorovných směrů

Sada 1 CAD Prostorové souřadnice v CAD systémech

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

Sada 1 CAD Stažení a instalace výukového SW firmy Autodesk

Digitální učební materiál

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

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

Sada 1 - PHP. 15. Výběr dat z databáze. Příkaz SELECT

Dynamické datové struktury III.

NPRG030 Programování I, 2010/11

Sada 2 Microsoft Word 2007

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Typové a netypové soubory

ˇ 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

Ekonomika Podnik a jeho právní úprava

Sada 1 Klempířská technologie

Sada 1 Geodezie I. 05. Vytyčení kolmice a rovnoběžky

Základy programování (IZP)

Maturitní téma: Programovací jazyk JAVA

Základy algoritmizace a programování

Sada 2 Microsoft Word 2007

Sada 2 Geodezie II. 16. Měření posunů a přetvoření

1 Úvod do Turbo Pascalu

Ekonomika Státní rozpočet

Sada 1 - PHP. 20. Obrázky z obrázků

Sada 1 - Ekonomika 3. ročník

Sada 2 Geodezie II. 02. Stabilizace bodů

Sada 2 CAD2. 4. CADKON 2D 2011 Vkládání schodiště

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Sada 1 Geodezie I. 15. Podrobné měření polohopisné

Ekonomika Veřejní obchodní společnost Komanditní společnost

STŘEDNÍ ŠKOLA STAVEBNÍ JIHLAVA

Sada 1 Geodezie I. 09. Nivelace pořadová, ze středu, plošná

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

Sada 2 Geodezie II. 09. Polní a kancelářské práce

Sada 1 Geodezie I. 04. Vytyčení přímky

Sada 1 Technologie betonu

Sada 2 Geodezie II. 12. Výpočet kubatur

Transkript:

S třední škola stavební Jihlava Sada 1 - Základy programování 17. Řadící algoritmy Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a zkvalitnění výuky prostřednictvím ICT Jaromír Železný 2013 Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

Řadící algoritmy slouží k setřídění jednotlivých prvků vstupního souboru (obvykle seznamu, pole) dle jejich velikosti v každém svém kroku porovnají (a případně v každém svém kroku porovnají (a případně prohodí ) dvě hodnoty ze vstupního seznamu pomocí operace menší nebo rovno, čímž zjistí jejich uspořádání v rámci výsledného seřazeného seznamu

Bubble sort Bubblesort (bublinkové řazení) je jednoduchý řadící algoritmus vylepšením bubblesortu je tzv. Shakersort (oboustranný bubble sort)

Bubble sort - princip mějme pole o N prvcích algoritmus se inicializuje (začíná) na indexu I=1 a porovnává se aktivní prvek s prvkem sousedním prvkem pokud je nižší číslo nalevo od vyššího, tak je prohodí (nižší číslo se posouvá ke konci pole) a se stejnou logikou algoritmus pokračuje na dalším indexu pokud jsou čísla ve správném pořadí, tak je neprohodí, ale pouze postoupí dále

Bubble sort - princip na konci každého průchodu posloupností se tímto způsobem na konec vždy dostane nejnižší číslo při následujícím průchodu algoritmus skončí na pozici N-1 (na poslední pozici pole je již to správné číslo), při každém následujícím opět o jednu pozici méně po N-1 průchodech (poslední bublinka je seřazena triviálně) je pole seřazeno

Bubble sort ukázka (1/2) (3 2 8 7 6) // zadání pole, budeme řadit mě od největšího k nejmenšímu (3 2 8 7 6) // začneme na pozici i=1 (3 2 8 7 6) // 3 a 2 jsou ve správném pořadí pořadí (3 2 8 7 6) // posuneme se na další index (i=2) (3 2 8 7 6) // 2 < 8, prohodíme je (3 8 2 7 6) // posuneme se na další index (i=3) (3 8 2 7 6) // 2 < 7, prohodíme je (3 8 7 2 6) // posuneme se na další index (i=4) (3 8 7 2 6) // 6 > 2, prohodíme je (3 8 7 6 2) // na pozici N je nejmenší prvek (3 8 7 6 2) // nový (druhý) průchod polem na posledním místě je nejmenší prvek, řazení tedy skončí na pozici N-1 (3 8 7 6 2) // 8 > 3, prohoďme je, posuneme se na další index (8 3 7 6 2) // 7 > 3, prohoďme je, posuneme se na další index (8 7 3 6 2) // 6 > 3, prohoďme je, na pozici N a N-1 máme 2 nejmenší

Bubble sort ukázka (2/2) (8 7 6 3 2) // nový (třetí) průchod polem, na posledním místě je nejmenší prvek, na předposledním je druhý nejmenší prvek, řazení tedy skončí na pozici N-2 (8 7 6 3 2) // 8 a 7 jsou ve správném pořadí, postoupíme na další index (8 7 6 3 2) // 7 a 6 jsou ve správném pořadí, na pozici N a N-1 a N-2 máme 3 nejmenší (8 7 6 3 2) // nový (třetí) průchod polem (8 7 6 3 2) // 8 a 7 jsou ve správném pořadí (8 7 6 3 2) // SEŘAZENO

program BubbleSort; var x : array [1..5] of integer; pomoc, I, J, N : integer; Begin N:=5; {nase pole ma 5 prvku} Writeln ('Zadej jednotlive prvky pole'); For I:=1 to N do Read (X[I]); writeln; For I := 1 to N-1 do begin for J := 1 to N-I do if (X[J+1] > X[J]) then begin pomoc := X[J+1]; X[J+1] := X[J]; X[J] := pomoc; End; End; For i:=1 to N do writeln (x[i]); readln; End. Bubble sort

Insertion sort insertionsort (řazení vkládáním) je algoritmus založený na principu porovnávání řazených hodnot a vkládání na správné místo

Insertion sort - princip mějme pole o N prvcích první prvek je triviálně ( správně ) zařazen vezmeme druhý prvek a zařadíme jej na správné místo podle velikosti vezmeme následující prvek a zařadíme jej na správné místo v již seřazených prvcích dokud pole obsahuje nezařazené prvky (dokud se neposuneme na poslední prvek), provádíme předchozí krok

Insertion sort - ukázka (3 2 8 7 6) // Zadání, prvek 3 je triviálně seřazen (3 2 8 7 6) // Vezmeme dvojku a vložíme jí na správné místo (tam už je) (3 2 8 7 6) // 8 vložíme na první místo, zbytek čísel posuneme (8 3 2 7 6) // 7 vložíme mezi 8 a 3, 3 a 2 posuneme (8 7 3 2 6) // 6 vložíme mezi 7 a 3, čísla 3 a 2 posuneme (8 7 6 3 2) // seřazeno

Insertion sort (1/3) program insertsort; var X : array[1..5] of integer; i, j, n, pozice, hodnota : integer; hotovo : boolean; begin N:= 5; {nase pole ma 5 prvku} Writeln ('Zadej jednotlive prvky pole'); For I:=1 to N do Read (X[I]); writeln;

Insertion sort (2/3) for j :=1 to N do begin hodnota := X[i]; pozice := i; hotovo := false; while not hotovo do begin if pozice <= 1 then end; else hotovo := true if hodnota >= X[pozice-1] then else hotovo := true begin end; X[pozice] := hodnota; end; X[pozice] := X[pozice-1]; pozice := pozice-1 ;

Insertion sort (3/3) {na zaver program vypise serazene pole} for i := 1 to n do write(x[i],' '); readln; readln; end.

Selectionsort Selectionsort (řazení výběrem) je jednoduchý řadící algoritmus v porovnání s dalšími kvadratickými algoritmy je selectionsort v obecném případě rychlejší než bubble sort, avšak pomalejší než insertion sort

Selection sort Selectionsort vychází z myšlenky, že pokud řadíme pole od největšího prvku k nejmenšímu, tak první bude nejvyšší prvek, za ním nejvyšší prvek ze zbytku pole atd. potom pouze postupně vybíráme nejvyšší prvky z neseřazené části pole a umísťujeme je na konec již seřazené části pole

Selection sort - ukázka (3 2 8 7 6) // zadání pole, řadíme od největšího k nejmenšímu (3 2 8 7 6) // nejvyšší je 8, prohodíme ho tedy s 3 na pozici 1 (8 2 3 7 6) // nejvyšší je 7, prohodíme ho tedy s 2 na pozici 2 (8 7 3 2 6) // nejvyšší je 6, prohodíme ho tedy s 3 na pozici 3 (8 7 6 2 3) // nejvyšší je 3, prohodíme ho tedy s 2 na pozici 4 (8 7 6 3 2) // seřazeno

Selection sort (1/3) program SelectSort; var X : array [1..5] of integer; I, J, PomocX, PomocI, N : integer; begin N:= 5; {nase pole ma 5 prvku} Writeln ('Zadej jednotlive prvky pole'); For I:=1 to N do Read (X[I]); writeln;

Selection sort (2/3) for I := 1 to N - 1 do begin pomoci:=i; pomocx:=x[i]; for J := (I + 1) to N do begin if (X[J] > PomocX) then begin PomocX := X[j]; PomocI := j; end; end; PomocX := X[i]; X[i] := X[PomocI]; X[PomocI] := PomocX; end;

Selection sort (3/3) {na zaver program vypise serazene pole} for i := 1 to n do write(x[i],' '); readln; end.

Řadící algoritmy - závěr největší část algoritmů řazení je založena na porovnávání dvojic prvků jedná se o univerzální metodu, kterou lze seřadit libovolná data v libovolné reprezentaci (stačí příslušná relace uspořádání) pro některé konkrétní reprezentace nějak vymezené množiny dat lze sestrojit algoritmy, které fungují na jiném principu, např. na základě reprezentace řazených čísel v poziční číselné soustavě

Zdroje: TurboPascal 6.0 - příručka uživatele (help) http://www.algoritmy.net/article/3/bubble-sort http://www.algoritmy.net/article/8/insertion-sort http://www.algoritmy.net/article/4/selection-sort Literatura: Radek HYLMAR: Programování pro úplné začátečníky, ComputerPress, Brno, 2009, ISBN 978-80-251-2129-0 Januš DRÓZD, Rudolf KRYL: Začínáme s programováním, GRADA a.s., Praha, 1992, ISBN 80-85424-41-X Tomáš HRUŠKA: Pascal pro začátečníky, SNTL, Praha 1989, ISBN 80-03- 00345-8 Materiál je určen k bezplatnému používání pro potřeby výuky a vzdělávání na všech typech škol a školských zařízení. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je : Jaromír Železný Pokud není uvedeno jinak, byly při tvorbě použity volně přístupné internetové zdroje. Autor souhlasí se sdílením vytvořených materiálů a jejich umístěním na www.ssstavji.cz.