Algorithm 线性搜索的不同渐近表示法

Algorithm 线性搜索的不同渐近表示法,algorithm,Algorithm,我以为我理解渐近符号,但在开始托马斯·科曼的算法解锁之后,我对他的一个例子感到相当困惑。他首先讨论了“更好的线性搜索”,得出结论:f(n)=Θ(n),最佳情况ω(1),最坏情况O(n) 线性搜索过程(A,n,x) 输入和输出:与线性搜索相同 对于i=1到n: A.如果A[i]=x,则返回i的值作为输出 返回NOT-FOUND作为输出 然后,他继续讨论sentinel线性搜索: 程序SENTINEL-LINEAR-SEARCH(A,n,x) 输入和输出:与线性搜索相同 保存[n]据我所知,这些语

我以为我理解渐近符号,但在开始托马斯·科曼的算法解锁之后,我对他的一个例子感到相当困惑。他首先讨论了“更好的线性搜索”,得出结论:f(n)=Θ(n),最佳情况ω(1),最坏情况O(n)

线性搜索过程(A,n,x)

输入和输出:与线性搜索相同

  • 对于i=1到n: A.如果A[i]=x,则返回i的值作为输出
  • 返回NOT-FOUND作为输出
  • 然后,他继续讨论sentinel线性搜索:

    程序SENTINEL-LINEAR-SEARCH(A,n,x)

    输入和输出:与线性搜索相同


  • 保存[n]据我所知,这些语句与案例的上下文有关。在最坏的情况下,你可以说它是O(n)甚至ω(1),但是Θ(n)携带更多的信息(上限和下限)。最好的情况也是如此。当你想说“所有情况”时,你永远不能使用Θ,因为你不能从bouth边对它进行渐近约束,因为“常数”和“线性”是不同的函数。我认为ω总是用来表示下限/最佳情况。而O总是用来表示上限/最坏情况。在更好的线性搜索中,我们看到最好的情况是当我们搜索的项目是数组中的第一个元素时,这意味着ω(1)。我们还知道,最坏的情况是,我们正在搜索的项是数组中的最后一个元素,它给出了O(n)。如果上界和下界不同,他如何得出结论,f(n)=Θ(n)正如我所理解的,这些陈述与案例的上下文有关。在最坏的情况下,你可以说它是O(n)甚至ω(1),但是Θ(n)携带更多的信息(上限和下限)。最好的情况也是如此。当你想说“所有情况”时,你永远不能使用Θ,因为你不能从bouth边对它进行渐近约束,因为“常数”和“线性”是不同的函数。我认为ω总是用来表示下限/最佳情况。而O总是用来表示上限/最坏情况。在更好的线性搜索中,我们看到最好的情况是当我们搜索的项目是数组中的第一个元素时,这意味着ω(1)。我们还知道,最坏的情况是,我们正在搜索的项是数组中的最后一个元素,它给出了O(n)。如果上界和下界不同,他如何得出f(n)=Θ(n)的结论