二进制搜索算法时间复杂度

问题描述 投票:0回答:1

我在Cormen书中研究的二进制Saerch算法的时间复杂度是:

  • 最佳情况-O(1)

  • 最坏的情况-O(log n)

我的疑问是,他们为什么直接用Big O记号法写出这两种复杂性。我可以说最佳案例复杂度Theta(1)最坏案例复杂度Theta(log n)吗?

time-complexity binary-search
1个回答
0
投票

是的,您可以说二分搜索算法的最佳运行时间复杂度为Theta(1),二分搜索算法的最坏运行时间复杂度为Theta(log n)。为了解释这一点,我们深入研究了Big O,Big Omega和Big Theta的定义,它们都是渐进符号,用于描述算法的运行时间和空间复杂性。

[当指的是算法的最佳/最坏情况下的运行时间时,通常指的是单个函数。 Big O表示法用于按上限运行时间描述算法,Big Omega表示法用于按下限运行时间描述算法。

以一种简单的方式陈述,Big O表示算法不能并且不会比Big Omega内的函数运行慢。Big Omega意味着算法不能并且不会比Big Omega内的函数运行得更快。为了使用Big Theta表示法来描述算法的运行时间复杂性,对于Big O和Big Omega表示法,算法的运行时间必须包括相同的功能。

对于二进制搜索,最好的情况是当搜索算法中的第一个元素是您要搜索的元素或项目时的情况。这意味着无论发生什么情况,该算法仅需查看不多于一个奇异项。因此,这种情况可以描述为具有O(1)和Omega(1)的运行时间。由于这两个函数相同,因此正确地说二进制搜索算法的最佳运行时间是Theta(1)。

二进制搜索的最坏情况是当需要检查每个元素并且最后检查的元素是要搜索的元素,或者该元素在数据结构中根本不存在时。由于二进制搜索利用分而治之的概念来查看每个元素,因此,在最坏情况下该算法的运行时间必须以某种形式(log n)限制是很简单的。具体来说,我们可以说它将具有O(log n)和Theta(log n)的运行时间,因为该算法由于必须查找的元素数量固定而无法运行得更快或更慢在。在这种情况下,两个函数是相同的,因此可以正确地说二进制搜索算法的最坏运行时间是Theta(1)。

© www.soinside.com 2019 - 2024. All rights reserved.