1 / 17

ALGORITMIZ ÁCIA ÚLOH

ALGORITMIZ ÁCIA ÚLOH. Triedenie hodnôt. Metódy. Triediace algoritmy sa najčastejšie využívajú v súvislosti so štrukturovanými premennými (poliami). Niekedy je potrebné vyhľadať prvok v poli, prípadne dané pole usporiadať podľa stanoveného kritéria. Budeme sa zaoberať nasledovnými metódami:

lacy-bass
Download Presentation

ALGORITMIZ ÁCIA ÚLOH

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALGORITMIZÁCIA ÚLOH Triedenie hodnôt

  2. Metódy Triediace algoritmy sa najčastejšie využívajú v súvislosti so štrukturovanými premennými (poliami). Niekedy je potrebné vyhľadať prvok v poli, prípadne dané pole usporiadať podľa stanoveného kritéria. Budeme sa zaoberať nasledovnými metódami: • Vyhľadávanie v neusporiadanom poli • Bublinková metóda • Priehradková metóda Triedenie • Priame vkladanie poľa • Priamy výber • Vyhľadávanie v neusporiadanom poli

  3. Výmena obsahu dvoch premenných Pri triedení usporiadanej množiny je veľmi často potrebné aj prehodiť obsah premenných. Táto výmena sa musí urobiť cez tretiu premennú. pom=a; a=b; b=pom;

  4. Vyhľadávanie v neusporiadanom poli Pre hľadanie v neusporiadanom poli platím, že musíme prejsť všetky jeho hodnoty, aby sme zistili, či sa tam hodnota nachádza, alebo nie. Algoritmus je založený na prehľadávaní poľa a porovnávaní hľadaného prvku s jeho jednotlivými prvkami x[i]. 5106841 166 Príklad 32A. Zostavte program, ktorý bude vyhľadávať v poli požadovaný prvok.

  5. Triedenie:Bublinková metóda – bublesort Je to najjednoduchšia metóda, no vhodná iba pre malú množinu čísel, pretože vykonávanie tohto algoritmu je časovo náročné. Spočíva v porovnávaní dvoch čísel, ktoré sa podľa potreby vymenia a pokračuje ďalším porovnávaním. Hodnoty akoby sa prebublávali na svoje konečné miesto. Ukážka: 9 4 2 7 1 4 2 7 19 2 4 17 9 2 14 7 9 4 9 2 4 2 4 1 2 2 9 4 7 1 4 2 4 7 9 1 7 4 7 4 7 1 9 7 9 7 9 7 9 4 2 7 1 9 2 4 1 7 9 2 1 4 7 9 1 2 4 7 9

  6. Bublinková metóda – bublesort T. j. Porovnávam ak je hodnôt n (5), musím vykonať n – 1 (4) porovnania a to opakujem n – 1 (4) krát. Pôjde teda o dva vnorené cykly so známym počtom opakovaní. Farebne je zvýraznené to číslo, ktoré je porovnávané s nasledujúcim. Táto úvaha vedie na algoritmus vnoreného cyklu, ktorý túto činnosť potrebný počet krát opakuje. Príklad 32B. Zostavte program, ktorý bude triediť podľa veľkosti ľubovoľný počet náhodne zvolených celých čísel.

  7. Triedenie:Priame vkladanie – insertsort Ide o spôsob usporiadania, kedy už pri napĺňaní poľa hodnotami ich priebežne usporiadame. Na obrázku vidíme, akým spôsobom premiestňujeme prvky poľa, aby sme mohli vložiť nový prvok na prázdne miesto. 2 3 8 12 16 18 24 27 15 2 3 8 12 16 16 18 24 27 15 2 3 8 12 15 16 18 24 27 15 Príklad 32C. Zostavte príklad na triedenie insertsort.

  8. Triedenie:Priamy výber – maxsort, minsort Z neusporiadaného poľa vyberáme maximum a vybranú hodnotu premiestnime. Narozdiel od predchádzajúcej metódy táto predpokladá, že pole je už naplnené hodnotami. 4 3 8 1 2 5 6 max = 4 4 >3 4 > 8 teda max = 8 8 > 1 8 > 2 8 >5 8 > 6 Po vykonaní porovnania v cykle vymeníme maximálny a posledný prvok a dostaneme usporiadanie: 4 3 61258

  9. Triedenie:Priamy výber – maxsort, minsort Opäť urobíme porovnanie, no tentokrát bez posledného prvku: 4 3 6 1 2 5 8 max = 4 4 >3 4 > 6teda max = 6 6 > 1 6 > 2 6 >5 Po vykonaní porovnania v cykle vymeníme maximálny a posledný prvok a dostaneme usporiadanie: 4 3 5 1268 O7päť urobíme porovnanie, no tentokrát bez dvoch posledných prvkov: 4 3 5 1268

  10. Triedenie:Priamy výber – maxsort, minsort max = 4 4 >3 4 > 5teda max = 5 5 > 1 5 > 2 Po vykonaní porovnania v cykle vymeníme maximálny a posledný prvok a dostaneme usporiadanie: 4 3 2 15 68 Po ďalších úpravách dostávame: 43 2 1 5 6 81 3 2 4 5 6 8 1 2 3 4 5 6 81 23 4 5 6 8 Príklad 32D. Zostavte príklad na triedenie maxsort.

  11. Triedenie:Priehradková metóda – quicksort Algoritmus spočíva v rozdeľovaní do 10-tich priehradok postupne podľa veľkosti číslice príslušného rádu a opätovnom vyberaní a pretrieďovaní. Pracuje neporovnateľne rýchlejšie ako pri bublinkovej metóde a nie je natoľko závislý od počtu triedených čísel. Je však programátorský náročnejší.

  12. Priehradková metóda – quicksort Ukážka: Majme čísla 541 247 321 785 954 147 543 256 589 672 134 027 650 357 214 232 1. Krok: Zatriedime ich do priehradiek podľa hodnoty číslice nultého rádu: 357 214 027 321 232 134 147 650 541 672 543 954 785 256 247 589 0 1 2 3 4 5 6 7 8 9 2. Krok: Teraz hodnoty vyberieme z priehradiek tak, že čísla naspodku (tie, čo boli do priehradky vložené najskôr) vyberieme najprv. Dostaneme: 650 541 321 672 232 543 954 134 214 785 256 247 147 027 357 589

  13. Priehradková metóda – quicksort 3. Krok: Teraz zaradíme čísla do priehradky podľa číslice prvého rádu: 147 357 247 256 027 134 543 954 589 214 321 232 541 650 682 785 0 1 2 3 4 5 6 7 8 9 4. Krok: Po ich vybratí dostaneme súbor, ktorý je roztriedení na mieste desiatok a jednotiek: 214 321 027 232 134 541 543 247 147 650 954 256 357 682 785 589

  14. Priehradková metóda – quicksort 5. Krok: Teraz zaradíme čísla do priehradky podľa číslice druhého rádu: 256 247 589 147 232 357 543 682 027 134 214 321 541 650 785 954 0 1 2 3 4 5 6 7 8 9 Po ich vybratí dostávame roztriedený súbor: 027 134 147 214 232 247 256 321 357 541 543 589 650 682 785 954

  15. Vyhľadávanie v usporiadanom poli Vyhľadávanie v usporiadanom poli je o to jednoduchšie, že nemusíme prehľadávať celé pole, ale iba jeho časť. Algoritmus je, rovnako ako v neusporiadanom poli, založený na porovnávaní hľadaného prvku s jeho jednotlivými prvkami x[i]. Keďže je pole usporiadané, prehľadávame ho iba kým nenarazíme na hodnotu väčšiu ako je hľadané číslo. Číslo sa v poli nachádza, po jeho nájdení cyklus končí: 2 3 6 10 12 166

  16. Vyhľadávanie v usporiadanom poli Číslo sa v poli nenachádza, po nájdení čísla väčšieho cyklus končí: 2 3 7 10 12 166 Príklad 32E. Zostavte program, ktorý bude vyhľadávať v usporiadanom poli požadovaný prvok.

  17. Vyhľadávanie delením intervalu Predchádzajúca metóda má drobné nevýhody v prípade, že je pole príliš dlhé, prípadne sa prvok nachádza na niektorom jeho konci. To môžeme využiť v algoritme delenia intervalu. Pod pojmom interval budeme rozumieť vzdialenosť medzi prvým a posledným prvkom poľa, teda a[1] až a[n]. Majme pole n = 16 hodnôt: 2345881012162432404651526040 1. delenie 3. 2. delenie Príklad 32F. Zostavte program, ktorý bude podľa algoritmu delenia intervalu vyhľadávať v poli požadovaný prvok.

More Related