Triedenie výberom: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 4: Riadok 4:
 
__TOC__
 
__TOC__
  
==Heapify==
+
==Rozšírenie binárnej haldy a algoritmus Heapify==
V tomto článku rozšírime pôvodný koncept dátovej štruktúry [[Hromada|binárna hromada]] Keďže hromada je špeciálny typ kompletného binárneho stromu, môžeme využiť nasledovné zákonitosti:
+
V tomto článku rozšírime pôvodný koncept dátovej štruktúry [[Hromada|binárna hromada]] pre prípad, keď dostaneme už naplnené pole hodnôt, ktoré nám reprezentuje kompletný binárny strom, z ktorého máme vytvoriť binárnu hromadu.
  
Každý kompletný binárny strom môže byť reprezentovaný ako dátová štruktúra pole, pričom platí:
+
Všeobecne platí, že každý kompletný binárny strom môžeme byť vyjadrený pomocou poľa s využitím nasledovných zákonitostí:
 
# Koreň stromu je vždy prvý prvok v poli (v našom prípade prvok na 0-tej pozícii).
 
# Koreň stromu je vždy prvý prvok v poli (v našom prípade prvok na 0-tej pozícii).
 
# Pre ľubovoľný index <math>i</math> z intervalu <math> \langle 0 \ ; \ \text{dĺžka} - 1 \rangle </math> platia nasledovné rovnice:
 
# Pre ľubovoľný index <math>i</math> z intervalu <math> \langle 0 \ ; \ \text{dĺžka} - 1 \rangle </math> platia nasledovné rovnice:
Riadok 17: Riadok 17:
 
\end{align}
 
\end{align}
 
</math>
 
</math>
 +
 +
Na základe týchto zákonitostí môžeme vytvoriť algoritmus Heapify, vďaka ktorému vieme elegantne uskutočniť operácie s hromadou, ako je vytvorenie hromady z poľa, zmazanie jednotlivých prvkov z hromady, čo sú základné časti triediaceho algoritmu Heap Sort.
  
 
==Heap Sort==
 
==Heap Sort==
  
 
==Selection Sort==
 
==Selection Sort==

Verzia zo dňa a času 17:30, 1. apríl 2021

Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

Rozšírenie binárnej haldy a algoritmus Heapify

V tomto článku rozšírime pôvodný koncept dátovej štruktúry binárna hromada pre prípad, keď dostaneme už naplnené pole hodnôt, ktoré nám reprezentuje kompletný binárny strom, z ktorého máme vytvoriť binárnu hromadu.

Všeobecne platí, že každý kompletný binárny strom môžeme byť vyjadrený pomocou poľa s využitím nasledovných zákonitostí:

  1. Koreň stromu je vždy prvý prvok v poli (v našom prípade prvok na 0-tej pozícii).
  2. Pre ľubovoľný index [math]i[/math] z intervalu [math] \langle 0 \ ; \ \text{dĺžka} - 1 \rangle [/math] platia nasledovné rovnice:
[math] \begin{align} \text{ľavý potomok} &= 2i + 1 && (1) \\ \text{pravý potomok} &= 2i + 2 && (2) \\ \text{rodič} &= \left \lfloor \frac{i - 1}{2} \right \rfloor \quad (\text {okrem} \ i = 0) && (3) \end{align} [/math]

Na základe týchto zákonitostí môžeme vytvoriť algoritmus Heapify, vďaka ktorému vieme elegantne uskutočniť operácie s hromadou, ako je vytvorenie hromady z poľa, zmazanie jednotlivých prvkov z hromady, čo sú základné časti triediaceho algoritmu Heap Sort.

Heap Sort

Selection Sort