修改二进制搜索的时间复杂度,计算中间为高 - 2

时间:2017-10-29 12:35:52

标签: algorithm search time-complexity binary-search asymptotic-complexity

我必须找出二进制搜索的时间复杂度,它计算分割点为mid = high - 2(而不是mid =(low + high)/ 2) 以便知道修改后的算法会更慢或更快

2 个答案:

答案 0 :(得分:2)

最糟糕的情况是搜索到的项目是第一个。在这种情况下,由于您总是从n中减去2,因此您将有大约n / 2步,这是线性复杂度。最好的情况是搜索到的项目恰好在n-2,这将是一个复杂的常数。平均复杂度,假设n - >无穷大也是线性的。

答案 1 :(得分:1)

提示:您可以根据二元搜索的递推公式推导出答案。

我们有T(n)= T(floor(n / 2))+ O(1)

由于我们分成两个相等的一半,我们有底线(n / 2)。您应该重写给定的公式来描述修改后的版本。此外,你应该使用Akra-Bazzi方法来解决修改版本的递归公式,因为你要分成两个不平衡的半部分。