Algorithm 以下短算法的时间复杂度是多少?

Algorithm 以下短算法的时间复杂度是多少?,algorithm,time-complexity,binary-search,Algorithm,Time Complexity,Binary Search,我试图设计和分析一种类似于二进制搜索算法的算法,但不是每次将它们分成三分之一或三分之二,而是将它们分成两半 以下是它的伪代码: BinarySearchThirds(A, low, high, k) if low == high if A[low] == k return low else return "not found" else third = third

我试图设计和分析一种类似于二进制搜索算法的算法,但不是每次将它们分成三分之一或三分之二,而是将它们分成两半

以下是它的伪代码:

BinarySearchThirds(A, low, high, k)
    if low == high
        if A[low] == k
            return low
        else
            return "not found"
    else
        third = third + (high-low)/3
        if key == A[mid]
            return mid
        if key < A[mid]
            return BinarySearchThirds(A, low, third - 1, k)
        else
            return BinarySearchThirds(A, third + 1, high, k)
binarySearch(A、低、高、k)
如果低==高
如果A[低]==k
低回报
其他的
返回“未找到”
其他的
第三个=第三个+(高-低)/3
如果键==A[mid]
中途返回
如果键
我得到这个步骤
返回二进制搜索三分之一(A,low,third-1,k)
需要T(n/3),这个步骤
返回二进制搜索三分之一(A,third+1,high,k)
需要T(2n/3),所以这个算法的递归方程是T(n)=T(2n/3)+T(n/3)+一些常数时间


我不确定这个递推方程是否正确,如果是的话,如何将它转换成一种形式,通过主方法将其求解成θ(…)

它与分界点是1/2还是2/3或999/1000或任何分数无关。每当你有一个常数分数,你可以用该分数乘以
n
,直到小于1的次数是
n
中的对数。变化的只是对数的底,但在大o表示法中,底是不相关的,因为所有的对数都是成比例的


因此,渐近时间复杂度必须与标准二进制搜索算法中的时间复杂度相同,即
O(logn)

您搜索的数字位于底部1/3的可能性有多大?排在前2/3的怎么样?你认为常规二进制搜索的复杂性是什么?据我所知,常规二进制搜索的复杂性是θ(log(n))。我只需要一个简单的时间复杂度估计(没有概率分布,所以我会说,位于底部1/3的数字等于顶部2/3的可能性是的,二进制搜索是O(log_2(n))。但是想想数字1-100。它在[1,33]中的概率是多少?它在[34100]中的概率是多少?可能性不相等。假设钥匙位于阵列中任何点的概率相等(即,没有一个位置的概率高于任何其他位置),则钥匙位于底部1/3的概率为1/3,钥匙位于顶部2/3的概率为2/3。