C 大oh和欧米茄符号之间到底有什么区别?

C 大oh和欧米茄符号之间到底有什么区别?,c,algorithm,data-structures,asymptotic-complexity,C,Algorithm,Data Structures,Asymptotic Complexity,我知道大oh表示上界,ω表示下界,但大多数地方我只看到大oh符号 例如,在线性搜索算法中,最坏的情况是大oh(n)。 然而,搜索到的号码可以在第一个位置找到。所以,输入的数量是1。因此,这是最好的情况。所以,我们可以把它写成大ω(1)。但我已经看到,在许多地方,大oh也用于最佳情况,但我不知道为什么 我知道这两种符号在理论上的区别。然而,我无法实际理解它。有三个重要的复杂性类别: O、 大O=一个松散的上限 Ω,ω=一个松散的下限 θ=严格的上下限 重要的是要认识到O和Ω是松散的界限。它们不一定

我知道大oh表示上界,ω表示下界,但大多数地方我只看到大oh符号

例如,在线性搜索算法中,最坏的情况是大oh(n)。 然而,搜索到的号码可以在第一个位置找到。所以,输入的数量是1。因此,这是最好的情况。所以,我们可以把它写成大ω(1)。但我已经看到,在许多地方,大oh也用于最佳情况,但我不知道为什么


我知道这两种符号在理论上的区别。然而,我无法实际理解它。

有三个重要的复杂性类别:

  • O、 大O=一个松散的上限
  • Ω,ω=一个松散的下限
  • θ=严格的上下限
  • 重要的是要认识到O和Ω是松散的界限。它们不一定是最优的。任何算法都有无穷多个上界和无穷多个下界

    例如,可以说线性搜索的上界为O(n2),下界为Ω(1)。我们知道它的实际复杂性介于这两个界限之间。然而,通常情况下,声明非最优边界通常是没有帮助的。这些界限是正确的,但没有用处

    我们通常想要知道最小的上界和最大的下界。如果你说线性搜索是O(n2),我可以改进你的答案,不仅是O(n2),它也是O(n)。这是一个较小的上限,因此更有用

    不仅如此,您还必须决定是查看最坏情况平均情况、还是最佳情况。除非另有说明,复杂性分析通常着眼于最坏的情况。因此,虽然您可能会在一个步骤中偶然发现要查找的项目,但线性搜索的最坏情况是必须查看所有n个项目。最好的情况复杂度是O(1),但最坏的情况是O(n)

    如果你能证明O=Ω,最小上界和最大下界是相同的,那么你现在知道了。在最坏的情况下,线性搜索在顶部以O(n)为界,在底部以Ω(n)为界,因此它的最坏情况复杂性正好是Θ(n)


    大多数说算法是O(whatever)的人实际上应该使用Θ(whatever)。如果你知道界是严格的上界和下界,那么Θ比O好。但是大多数人也不记得这些复杂的东西,所以大O已经成为θ的一个懒惰的退路。

    有三个重要的复杂度类别:

  • O、 大O=一个松散的上限
  • Ω,ω=一个松散的下限
  • θ=严格的上下限
  • 重要的是要认识到O和Ω是松散的界限。它们不一定是最优的。任何算法都有无穷多个上界和无穷多个下界

    例如,可以说线性搜索的上界为O(n2),下界为Ω(1)。我们知道它的实际复杂性介于这两个界限之间。然而,通常情况下,声明非最优边界通常是没有帮助的。这些界限是正确的,但没有用处

    我们通常想要知道最小的上界和最大的下界。如果你说线性搜索是O(n2),我可以改进你的答案,不仅是O(n2),它也是O(n)。这是一个较小的上限,因此更有用

    不仅如此,您还必须决定是查看最坏情况平均情况、还是最佳情况。除非另有说明,复杂性分析通常着眼于最坏的情况。因此,虽然您可能会在一个步骤中偶然发现要查找的项目,但线性搜索的最坏情况是必须查看所有n个项目。最好的情况复杂度是O(1),但最坏的情况是O(n)

    如果你能证明O=Ω,最小上界和最大下界是相同的,那么你现在知道了。在最坏的情况下,线性搜索在顶部以O(n)为界,在底部以Ω(n)为界,因此它的最坏情况复杂性正好是Θ(n)

    大多数说算法是O(whatever)的人实际上应该使用Θ(whatever)。如果你知道界是一个严格的上界和下界,那么Θ比O好。但是大多数人也不记得这些复杂的东西,所以大O已经成为θ的一个懒惰的退路

    我知道这两种符号在理论上的区别。然而,我无法实际理解它

    大O在描述算法时使用得更广泛,因为知道算法的运行情况通常更有用,这样工程师就可以为任何情况做好准备

    然而,大欧米茄通常没有大O有用。虽然知道算法的运行速度很好,但在设计软件时,工程师需要知道最坏的情况,以便为任何情况做好准备

    我知道这两种符号在理论上的区别。然而,我无法实际理解它

    大O在描述算法时使用得更广泛,因为知道算法的运行情况通常更有用,这样工程师就可以为任何情况做好准备


    然而,大欧米茄通常没有大O有用。虽然知道算法的运行速度很好,但在设计软件时,工程师需要知道最坏的情况,以便为任何情况做好准备。

    当人们说运行时间是O(f(n)),它们的意思是,运行时间属于O(f(n))的函数类

    i、 即f(n)=0

    在线性搜索的具体问题中,最坏的情况确实需要一些时间,即O(N)

    最佳情况需要恒定的时间-
    T=k
    。但k属于