• 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

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.
  1. Pokud pro nějaké , pak
  2. Pokud , pak
  3. 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)

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í