计算中间值为 high - 2 的改进二分搜索的时间复杂度
Time complexity for modified binary search which calculates the mid as high - 2
我必须找出计算分界点为 mid = high - 2(而不是 mid = (low + high)/2)的二分查找的时间复杂度
以便知道修改后的算法会慢多少或快多少
最坏的情况是搜索的项目是第一个。在这种情况下,由于您总是从 n 中减去 2,因此您将有大约 n/2 步,这是一个线性复杂度。最好的情况是搜索的项目恰好在 n-2,这将采用常数复杂度。平均复杂度,假设 n -> 无穷大也是线性的。
提示:可以根据二分查找的递归公式推导出答案。
我们有 T(n) = T(floor(n/2)) + O(1)
因为我们分成相等的两半,所以我们有 floor(n/2)。您应该重写给定的公式来描述修改后的版本。此外,您应该使用 Akra-Bazzi 方法来解决修改版本的递归公式,因为您将分成两个不平衡的一半。
我必须找出计算分界点为 mid = high - 2(而不是 mid = (low + high)/2)的二分查找的时间复杂度 以便知道修改后的算法会慢多少或快多少
最坏的情况是搜索的项目是第一个。在这种情况下,由于您总是从 n 中减去 2,因此您将有大约 n/2 步,这是一个线性复杂度。最好的情况是搜索的项目恰好在 n-2,这将采用常数复杂度。平均复杂度,假设 n -> 无穷大也是线性的。
提示:可以根据二分查找的递归公式推导出答案。
我们有 T(n) = T(floor(n/2)) + O(1)
因为我们分成相等的两半,所以我们有 floor(n/2)。您应该重写给定的公式来描述修改后的版本。此外,您应该使用 Akra-Bazzi 方法来解决修改版本的递归公式,因为您将分成两个不平衡的一半。