- Třídění sléváním (slučováním)
- Algoritmus “rozděl a panuj”
- Setřiď levou polovinu pole, setřiď pravou polovinu pole, slij obě poloviny
- Složitost algoritmu v nejhorším případě:
- Out-of-place třídění
- Stabilní algoritmus porovnávání
Merge-Sort(A, p, r)
if p<r
then q <- floor((p+r)/2)
Merge-Sort(A, p, q)
Merge-Sort(A, q+1, r)
Merge(A, p, q, r)
Merge(A, p, q, r)
n1 <- q-p+1
n2 <- r-q
vytvoř nová pole L[0 ... n1] a R[0 ... n2]
for i <- 0 to n1-1
do L[i] <- A[p+i]
for j <- 0 to n2-1
do R[j] A[q+1+j]
L[n1] <- infinity
L[n2] <- infinity
i <- 0
j <- 0
for k <- p to r
do if L[i] <= R[j]
then A[k] < L[i]
i <- i+1
else A[k] <- R[j]
j <- j+1
Příklad
Odůvodnění složitosti MergeSort
- Při počítání časové složitosti algoritmu Merge Sort dojedeme k pojmu tzv. rekurence
- Rekurence se objevuje u algoritmů, kde dochází k rekurzivním voláním. Rekurence je rovnice (nebo nerovnost), která popisuje funkci z hlediska její hodnoty na menších částech. Příkladem může být tento tvar .
- Pro zjednodušení určitého typu rekurence slouží Master Theorem (viz dále)
Tip
- Master Theorem řeší následující typ rekurence.
- Pokud pro nějaké , pak
- Pokud , pak
- Pokud pro nějaké a pokud pro nějaké a dostatečně velké , pak .
- Složitosti merge sortu potom můžeme vyjádřit následovně (pomocí rovnic i stromu)
- pro
- pro
- (podle Master theoremu)
Navigace
Předchozí: Quick sort a jeho složitost Následující: Heap sort a jeho složitost Celý okruh: 1. Teoretické základy informačních technologií