Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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

Podobné prezentace


Prezentace na téma: "Algoritmizace a programování Třídící algoritmy - 12 Mgr. Josef Nožička IKT Algoritmizace a programování www.zlinskedumy.cz."— Transkript prezentace:

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

2 AnotaceMateriál poskytuje žákům ucelený přehled nejznámějších třídících algoritmů. Musí být doplněn výkladem. AutorMgr. Josef Nožička (Autor) JazykČeština Očekávaný výstup26–41-M/01 Elektrotechnika M/01 Technické lyceum Speciální vzdělávací potřeby - žádné - Klíčová slovaTřídění, algoritmus, posloupnost Druh učebního materiáluPrezentace Druh interaktivityKombinované Cílová skupinaŽák Stupeň a typ vzděláváníodborné vzdělávání Typická věková skupina let Vazby na ostatní materiályJe součástí IKT.

3 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.

4 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(N 2 ). Nejznámější algoritmy, založené na přímé metodě: Bubblesort Selectsort Insertsort

5 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

6 Bubblesort Vývojový diagram : Zápis v prog. jazyce: for i:=1 to n−1 do begin for j:=1 to n-1 do begin if a[j]>a[j+1] then begin pom:=a[j]; a[j]:= a[j+1]; a[j+1]:=pom; end; 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.

7 Selectsort Vývojový diagram : Zápis v prog. jazyce: for i:=1 to n−1 do begin for j:=i+1 to n do begin if a[i]>a[j] then begin pom:=a[i]; a[i]:=a[j]; a[j]:=pom; end; 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.

8 Quicksort 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 1.Vybereme prostřední prvek (tzv. pivot). 2.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ě). 3.Obě části posloupnosti dotřídíme rekurzivně (aplikujeme pro ně body 1. a 2.) 4.Třídění skončí, jakmile všechny rozdělené posloupnosti budou mít pouze 1 prvek.

9 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 j:=j−1; if i<=j then begin pom:=b[i]; b[i]:=b[j]; b[j]:=pom; i:=i+1; j:=j−1; end; until i>=j; if j>m then Quicksort(b, m,j); if i

10 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.

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


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

Podobné prezentace


Reklamy Google