我目前正在学习算法分析,有一个关于二分查找的时间复杂度的问题。据我所知,基于递推关系 T(n),二分查找最坏情况的时间复杂度是 O(logn)。
但是,我对二分查找在什么条件下被认为具有 θ(logn) 的时间复杂度感到困惑。具体来说,我知道对于 θ(logn) 的算法,它必须在最坏情况下为 O(logn),在最好情况下为 Ω(logn)。
但是二分查找的最佳情况时间复杂度实际上不是 O(1) 吗?因为最佳情况发生在第一次尝试找到目标时?这如何与整体 θ(logn) 复杂度相协调?我在对 T(n) 的分析或 θ 符号的定义中是否遗漏了一些东西?
我希望对此有任何澄清或指导,特别是如果有一个我可能忽略的简单概念。
你在这里不正确:“我理解对于一个算法来说,要达到 θ(logn),它必须在最坏情况下为 O(logn),在最好情况下为 Ω(logn)”
两个界限都适用于最坏情况:对于 θ(logn) 的算法,它必须在 最坏情况下为 O(logn),在 最坏情况下为 Ω(logn)。