计算递归算法的时间复杂度T(n)= T(k)+ T(n-k)

时间:2017-06-05 03:47:53

标签: algorithm recursion time-complexity

我想计算以下递归算法的时间复杂度,其中,

n = j - i (size of array)
i ≤ k ≤ j
process(A, i, j) takes Θ(n) time 

Algo(Array A[], int i, int j)
    if (i<j)
        k = process(A, i, j)
        Algo(A, i, k)
        Algo(A, k+1, j)

我想出了以下内容:

T(n) = Θ(n) + T(k) + T(n-k)

我不确定这是否正确,如果是,如何继续?

更新:

以下是否正确?

k的最坏情况值是i或j,

T(n) = Θ(n) + T(0) + T(n)  

1 个答案:

答案 0 :(得分:2)

这种递归结构更像是快速排序,其最坏情况下的运行时间为O(n^2)

algorithm quicksort(A, lo, hi) is
    if lo < hi then
        p := partition(A, lo, hi)
        quicksort(A, lo, p – 1)
        quicksort(A, p + 1, hi)

分区算法需要O(N)次。如需分析,请参阅Quick-Sort。我无法解释得更好。