The Quadratic Combine

This maximum-subarray-sum solution is correct but slow. The helper crossing uses a double loop, so it costs Θ(m2)\Theta(m^2) on a slice of length mm; everything else in best is Θ(1)\Theta(1).

def best(a, lo, hi):
    if hi - lo == 1:
        return a[lo]
    mid = (lo + hi) // 2
    return max(best(a, lo, mid),
               best(a, mid, hi),
               crossing(a, lo, mid, hi))

What is the total running time on nn elements?

A

Θ(n3)\Theta(n^3)

B

Θ(n2)\Theta(n^2)

C

Θ(n2log⁡n)\Theta(n^2 \log n)

D

Θ(nlog⁡n)\Theta(n \log n)