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

Time complexity 二进制搜索算法的时间复杂度,time-complexity,binary-search,Time Complexity,Binary Search,我在Cormen的书中研究过,二进制Saerch算法的时间复杂度是: 最佳案例-O(1) 最坏情况-O(对数n) 我的疑问是,他们为什么会直接用大O符号写出这两种复杂的东西。我可以说最佳情况复杂度是θ(1)和最坏情况复杂度是θ(logn)?是的,您可以说二进制搜索算法的最佳情况运行时间复杂度是θ(1)二元搜索算法的最坏运行时间复杂度为θ(logn)。为了解释这一点,我们深入研究了大O、大ω和大θ的定义,它们都是描述算法运行时间和空间复杂性的渐近符号 当提到算法的最佳/最坏运行时间时,通常指的

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

  • 最佳案例-O(1)

  • 最坏情况-O(对数n)


我的疑问是,他们为什么会直接用大O符号写出这两种复杂的东西。我可以说最佳情况复杂度θ(1)最坏情况复杂度θ(logn)

是的,您可以说二进制搜索算法的最佳情况运行时间复杂度是θ(1)二元搜索算法的最坏运行时间复杂度为θ(logn)。为了解释这一点,我们深入研究了大O、大ω和大θ的定义,它们都是描述算法运行时间和空间复杂性的渐近符号

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

用一种更简单的方式说,大O意味着算法不能也不会比大O内的函数运行得慢。大Omega意味着算法不能也不会比大Omega内的函数运行得快。为了使用大θ符号来描述算法的运行时间复杂性,算法的运行时间必须包含大O和大ω符号的相同函数

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


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

是的,可以说二进制搜索算法的最佳情况下运行时间复杂度是θ(1),二进制搜索算法的最坏情况下运行时间复杂度是θ(logn). 为了解释这一点,我们深入研究了大O、大ω和大θ的定义,它们都是描述算法运行时间和空间复杂性的渐近符号

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

用一种更简单的方式说,大O意味着算法不能也不会比大O内的函数运行得慢。大Omega意味着算法不能也不会比大Omega内的函数运行得快。为了使用大θ符号来描述算法的运行时间复杂性,算法的运行时间必须包含大O和大ω符号的相同函数

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


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

在此处发布时,请关闭大写锁定。没有人喜欢被人大喊大叫,这样做不会让你更快地得到帮助。谢谢。在这里发帖时请关闭大写锁定。没有人喜欢被人大喊大叫,这样做不会让你更快地得到帮助。谢谢