【发布时间】:2021-02-18 17:40:47
【问题描述】:
我正在尝试设计一个 递归 二进制搜索算法(在伪代码中)以在 n 个整数的(排序)列表中找到任意数字 k,这会破坏将实例分为两部分:一与 1/3 元素和另一个具有 2/3 的元素。然后我需要将其复杂性与更传统的二分搜索算法进行比较,该算法将实例分成两半。
到目前为止,这是我在伪代码方面提出的 - 我不确定它是否正确。但是,我不太确定如何比较它们的时间复杂度。
BinarySearch(A, value, low, high) {
// invariants: value > A[i] for all i < low
value < A[i] for all i > high
if (high < low)
return not_found // value would be inserted at index "low"
third = (low + high) / 3
if (A[third] > value)
return BinarySearch(A, value, low, third-1)
else if (A[third] < value)
return BinarySearch(A, value, third+1, high)
else
return third
}
【问题讨论】: