Разделяй и властвуй
Задача делится на части, решается рекурсивно и собирается.
Сигнатура
часто O(n log n)Разделяй и властвуй — это стратегия из трёх шагов: разделить задачу на подзадачи, решить каждую рекурсивно и объединить результаты. По ней построены сортировка слиянием, быстрая сортировка и бинарный поиск.
Сложность: часто O(n log n) благодаря логарифмическому числу уровней рекурсии; точная оценка выводится из основной теоремы о рекуррентах. Память: O(log n) и выше на стек.
def max_divide(a):
if len(a) == 1:
return a[0]
mid = len(a) // 2
left = max_divide(a[:mid])
right = max_divide(a[mid:])
return left if left > right else right
print(max_divide([3, 9, 2, 7])) # 9