Algoritmizace a programování Třídící algoritmy - 12

Slides:



Advertisements
Podobné prezentace
IKT PHP PHP Tvorba formuláře - 10 Mgr. Josef Nožička
Advertisements

Vnitřní řazení v poli (in sito)
PHP Souhrnné cvičení Mgr. Josef Nožička IKT PHP
PROGRAMOVATELNÉ AUTOMATY SÉRIOVÝ PŘENOS13 Ing. Jana Horáková Elektrotechnika
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
MECHANICKÉ KMITÁNÍ 08. Kinematika harmonického pohybu – příklady II.
MĚŘENÍ JALOVÉHO A ZDÁNLIVÉHO VÝKONU
PHP Práce se soubory v PHP - 13
ACCESS IMPORT TABULKY Z EXCELU- 04 Ing. Jana Horáková IKT MS Office
PHP Podmíněné příkazy v PHP - 06
Algoritmizace a programování Datové typy v Delphi - 05
PHP Cyklické příkazy v PHP - 08
Algoritmizace a programování Podprogramy v Delphi - 10
PHP Zpracování formuláře v PHP - 11 Mgr. Josef Nožička IKT PHP
Algoritmizace a programování Operátory a příkazy v Delphi - 07
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
Statika Vazbové síly na nosníku 15
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Řadicí algoritmy autor: Tadeáš Berkman.
MS OFFICE - WORD TITULNÍ STRANA A OBSAH Ing. Petr Hanáček
MS OFFICE - WORD ZÁHLAVÍ A ZÁPATÍ Ing. Petr Hanáček
Algoritmy a programovací techniky
PHP PHP – základy syntaxe (část 2) - 04 Mgr. Josef Nožička IKT PHP
KONTROLA MĚŘICÍCH PŘÍSTROJŮ
POČÍTAČOVÁ GRAFIKA PROGRAMY A NÁSTROJE PRO PRÁCI S VEKTOROVOU GRAFIKOU 2 ING. BOHUSLAVA VITEKEROVÁ IKT MS Office
PHP Souhrnné cvičení Mgr. Josef Nožička IKT PHP
ELEKTROTECHNICKÁ MĚŘENÍ
EXCEL ŘAZENÍ DAT ING. BOHUSLAVA VITEKEROVÁ IKT MS Office
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
Programovatelné automaty CV podprogramy a funkční bloky 12
Excel úpravy grafu, karta Návrh
Excel export a import dat. Import dat z webu.
Access Formuláře, cvičení
ACCESS SESTAVY, CVIČENÍ Ing. Jana Horáková IKT MS Office
ACCESS PŘÍKAZOVÉ TLAČÍTKO, CVIČENÍ 20 Ing. Jana Horáková IKT MS Office
Úrokový počet Prezentace_13 Mgr. Silva Vaňková OPČ_Úrokový počet
Technická mechanika Pružnost a pevnost Namáhání na krut, pevnostní rovnice v krutu, dovolené napětí v krutu 09 Ing. Martin Hendrych
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
Algoritmizace a programování Binární soubory - 14 Mgr. Josef Nožička IKT Algoritmizace a programování
POČÍTAČOVÁ GRAFIKA ÚPRAVA FOTOGRAFIÍ – ZÁKLADNÍ ÚPRAVY ING. BOHUSLAVA VITEKEROVÁ IKT MS Office
Ing. Bohuslava Vitekerová
EKONOMIKA MAJETEK podniku Ing. Hana Kročová
Programovatelné automaty princip činnosti PLC 03
MĚŘENÍ ČINNÉHO VÝKONU V TROJFÁZOVÉ SÍTI
Sorty Bubble, Insert a Quick
PHP Souhrnné cvičení Mgr. Josef Nožička IKT PHP
Procentový počet Prezentace_12
PHP PHP a MySQL - 15 Mgr. Josef Nožička IKT PHP
Algoritmizace a programování Vývojové diagramy - 03
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
Kalkulace zboží Prezentace_16 Mgr. Silva Vaňková OPČ_Kalkulace zboží
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
PHP Souhrnné cvičení Mgr. Josef Nožička IKT PHP
ACCESS ÚVOD DO PROGRAMU - 02 Ing. Jana Horáková IKT MS Office
EXCEL FILTROVÁNÍ DAT ING. BOHUSLAVA VITEKEROVÁ IKT MS Office
Programovatelné automaty AD převodníky 11
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
Rozdělovací počet Prezentace_14
Ing. Bohuslava Vitekerová
PROGRAMOVATELNÉ AUTOMATY CV OBRAZOVKY 05 Ing. Jana Horáková Elektrotechnika
IKT MS Office Access Formuláře Ing. Jana Horáková
Statika Moment silové soustavy, nahrazení síly silou 07
IKT MS Office Access Sestavy Ing. Jana Horáková
ACCESS SESTAVY Ing. Jana Horáková IKT MS Office
Excel export a import dat. Import ze souboru.
Programovatelné automaty CV rozlišení směru pohybu 17
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
Algoritmy a programovací techniky Třídící algoritmy.
Transkript prezentace:

Algoritmizace a programování Třídící algoritmy - 12 IKT Algoritmizace a programování Algoritmizace a programování Třídící algoritmy - 12 Mgr. Josef Nožička www.zlinskedumy.cz

Anotace Materiál poskytuje žákům ucelený přehled nejznámějších třídících algoritmů. Musí být doplněn výkladem. Autor Mgr. Josef Nožička (Autor) Jazyk Čeština Očekávaný výstup 26–41-M/01 Elektrotechnika 78-42-M/01 Technické lyceum Speciální vzdělávací potřeby - žádné - Klíčová slova Třídění, algoritmus, posloupnost Druh učebního materiálu Prezentace Druh interaktivity Kombinované Cílová skupina Žák Stupeň a typ vzdělávání odborné vzdělávání Typická věková skupina 16 - 19 let Vazby na ostatní materiály Je součástí IKT.

Třídící algoritmy Metody třídění můžeme rozdělit do dvou hlavních skupin, a to na vnitřní třídění, kdy si můžeme dovolit všechna data načíst do (rychlé) paměti počítače, a na vnější třídění, kdy již třídění musíme realizovat opakovaným čtením a vytvářením diskových souborů. V tomto učebním textu se omezíme pouze na algoritmy vnitřního třídění, které dále dělíme na algoritmy s přímými metodami a algoritmy s nepřímými metodami.

Přímé metody Algoritmy z této skupiny jsou vesměs jednoduché, krátké a celé třídění provádějí přímo v poli dat. Většinou mají časovou složitost O(N2). Nejznámější algoritmy, založené na přímé metodě: Bubblesort Selectsort Insertsort

Nepřímé metody Tyto algoritmy jsou složitější, při třídění často využívají rekurze nebo rozdělení a zpětného slučování pole, které třídíme. Jsou rychlejší než algoritmy z předchozí skupiny, většinou mají časovou složitost O(N.log N). Nejznámější algoritmy, založené na nepřímé metodě: Quicksort Mergesort

Bubblesort Vývojový diagram: Zápis v prog. jazyce: for i:=1 to n−1 do Třídění je založeno na principu, že se postupně systematicky porovnávají dvojice sousedních prvků a vyměňují se spolu vždy, když menší číslo následuje po větším. Tak vlastně maximální prvek „probublá“ na správné místo na konci posloupnosti. Třídění končí, neprovedla-li se při průchodu posloupností žádná změna. Vývojový diagram: Zápis v prog. jazyce: for i:=1 to n−1 do begin for j:=1 to n-1 do if a[j]>a[j+1] then pom:=a[j]; a[j]:= a[j+1]; a[j+1]:=pom; end;

Selectsort Vývojový diagram: Zápis v prog. jazyce: for i:=1 to n−1 do Principem tohoto řazení je výběr mezního prvku (maximum nebo minimum) z tříděné posloupnosti a jeho záměna s prvním (posledním) prvkem. V dalším kroku máme pole o (n−1) prvcích a opakujeme totéž. Takto postupujeme až do úplného seřazení posloupnosti. Algoritmus končí, až nesetříděná část neobsahuje žádný prvek. Vývojový diagram: Zápis v prog. jazyce: for i:=1 to n−1 do begin for j:=i+1 to n do if a[i]>a[j] then pom:=a[i]; a[i]:=a[j]; a[j]:=pom; end;

Quicksort Popis algoritmu v krocích Quicksort je jeden z nejrychlejších algoritmů, založených na vnitřním třídění. Základní myšlenkou quicksortu je rozdělení řazené posloupnosti čísel na dvě přibližně stejné části (jedná se o algoritmus typu rozděl a panuj). V jedné části jsou čísla větší a ve druhé menší než zvolená hodnota (tzv. pivot). Pokud je tato hodnota zvolena dobře, jsou obě části přibližně stejně velké. Obě části se pak seřadí rekurzivně stejným postupem. Popis algoritmu v krocích Vybereme prostřední prvek (tzv. pivot). Prvky z levé strany, které jsou větší než pivot, vyměníme za prvky z pravé strany, které jsou menší než pivot (případně naopak – dle toho, zda třídíme vzestupně či sestupně). Obě části posloupnosti dotřídíme rekurzivně (aplikujeme pro ně body 1. a 2.) Třídění skončí, jakmile všechny rozdělené posloupnosti budou mít pouze 1 prvek.

Quicksort – zápis v prog. jazyce procedure Quicksort(var b:pole; m,n:integer); var i, j, p, x: integer; begin i:=m; j:=n; p:=b[(i+j)div 2]; repeat while b[i]<p do i:=i+1; while b[j]>p do j:=j−1; if i<=j then pom:=b[i]; b[i]:=b[j]; b[j]:=pom; end; until i>=j; if j>m then Quicksort(b, m,j); if i<n then Quicksort(b, i,n); end; begin Quicksort(b, 1, n);

Shrnutí Výběr nejvhodnějšího třídícího algoritmu závisí především na počtu třídících prvků. Je-li například počet prvků menší než 10, je v podstatě jedno, který třídící algoritmus použijeme. Při velkém počtu prvků se většinou vyplatí použít některý z algoritmů, založených na nepřímé metodě. Je však třeba brát v potaz i paměťové možnosti počítače, na němž bude příslušný program realizován.

Zdroje ORAVA, Martin. Animace třídících algoritmů a programových struktur. Uherské Hradiště: SŠPH Uherské Hradiště, 2010 (maturitní práce)