【发布时间】:2017-10-29 21:13:44
【问题描述】:
我必须找出二进制搜索的时间复杂度,它计算分割点为 mid = high - 2(而不是 mid = (low + high)/2) 以便知道修改后的算法会慢多少或快多少
【问题讨论】:
标签: algorithm search time-complexity binary-search asymptotic-complexity
我必须找出二进制搜索的时间复杂度,它计算分割点为 mid = high - 2(而不是 mid = (low + high)/2) 以便知道修改后的算法会慢多少或快多少
【问题讨论】:
标签: algorithm search time-complexity binary-search asymptotic-complexity
最坏的情况是搜索的项目是第一个。在这种情况下,由于您总是从 n 中减去 2,因此您将有大约 n/2 步,这是一个线性复杂度。最好的情况是搜索的项目正好在 n-2,这将需要一个恒定的复杂度。平均复杂度,假设 n -> 无穷大也是线性的。
【讨论】:
提示:您可以根据二分搜索的递归公式得出答案。
我们有 T(n) = T(floor(n/2)) + O(1)
由于我们分成相等的两半,所以我们有 floor(n/2)。您应该重写给定的公式来描述修改后的版本。此外,您应该使用 Akra-Bazzi 方法来求解修改后的版本的递归公式,因为您正在分成两个不平衡的半部分。
【讨论】: