Function 如何计算此递归函数的最坏情况(理论)运行时间?

Function 如何计算此递归函数的最坏情况(理论)运行时间?,function,recursion,time,master-theorem,Function,Recursion,Time,Master Theorem,我正在分析这段代码,以查看如何计算最坏情况下的理论运行时间。我用的是主定理。有人能给我一个关于如何达到运行时间的分步解决方案吗 def sort(list, i, j): if list[i] > list[j]: list[j], list[i] = list[i], list[j] if i + 1 >= j: return k = (j - i + 1)/3 sort(list, i, j - k) sor

我正在分析这段代码,以查看如何计算最坏情况下的理论运行时间。我用的是主定理。有人能给我一个关于如何达到运行时间的分步解决方案吗

def sort(list, i, j):
    if list[i] > list[j]:
        list[j], list[i] = list[i], list[j]
    if i + 1 >= j:
        return
    k = (j - i + 1)/3
    sort(list, i, j - k)
    sort(list, i + k, j)
    sort(list, i, j - k)

因此,马斯特定理是
T(n)=a*T(n/b)+f(n)
,其中
a
是子问题的数量,
n/b
是子问题的大小,
f(n)
是每次调用必须进行的计算量

a:
有三个子问题或三个递归调用

n/b:
每个子问题最多只馈入原始数量的
2/3
。你可以为每一个都证明它,但举个例子:
sort(list,i,j-k)
有一个
(j-k)-i
的问题大小,即
j-(j-i+1)/3-i=(2j-2i-1)/3

f(n):
O(1)
,或者以恒定时间为界,因为您只需要执行两个恒定时间切换


这应该是关于
O(n^(log(3)base(2/3))
很抱歉数学符号,我不知道如何在堆栈溢出上使用它

您需要调用
sort(list,i,j-k)
两次吗?这是一种三向快速排序吗?