Rozděl a panuj řeší problém pomocí (1) rozdělení na menší podproblémy, (2) řešení každého rekurzivně a (3) kombinování výsledků. Mnoho efektivních algoritmů následuje tuto šablonu.
Idea
Pokud jsou podproblémy nezávislé a rychle se zmenšují, celková práce následuje relaci, kterou můžete analyzovat pomocí Master Theoremu.
Příklad: maximum prvku pomocí rozděl a panuj
():
lo == hi:
arr[lo]
mid = (lo + hi) //
left = max_dc(arr, lo, mid)
right = max_dc(arr, mid + , hi)
(left, right)
max_dc([, , , ], , )
