Algorithm 我的算法的最佳情况是n=1,因为这是最快的?对吗?

Algorithm 我的算法的最佳情况是n=1,因为这是最快的?对吗?,algorithm,time-complexity,big-o,Algorithm,Time Complexity,Big O,最佳情况定义为大小为n的所有输入中,哪个输入最便宜。 “我的算法的最佳情况是n=1,因为这是最快的。”?是对还是错?如果我输入N的大小很大,这意味着需要额外的时间。如果我输入较小的N值,这意味着它将花费更少的时间?那么,这意味着我们依赖于投入的规模。。?而且,如果我给N大小的数组输入任意数字(比如45)进行搜索,并且在最后找到元素,这也意味着最坏的情况?(但N从何而来?它已经固定了吗?) 我对这一切感到困惑?如果我考虑这两种情况。意思是 我们将修正数组的大小,比如N,我制作了一个由N个项目组成的

最佳情况定义为大小为n的所有输入中,哪个输入最便宜。 “我的算法的最佳情况是n=1,因为这是最快的。”?是对还是错?如果我输入N的大小很大,这意味着需要额外的时间。如果我输入较小的N值,这意味着它将花费更少的时间?那么,这意味着我们依赖于投入的规模。。?而且,如果我给N大小的数组输入任意数字(比如45)进行搜索,并且在最后找到元素,这也意味着最坏的情况?(但N从何而来?它已经固定了吗?) 我对这一切感到困惑?如果我考虑这两种情况。意思是

  • 我们将修正数组的大小,比如N,我制作了一个由N个项目组成的数组
  • 我们将放置一个元素作为搜索的输入 它的平均值、最坏情况、最佳情况、平均情况取决于上述两种情况(N个大小的数组和输入类型)。
    我说得对吗

    当某物为O(n)时,这意味着预期时间与输入中的元素数量成正比。这意味着,如果您将输入加倍,那么您的预期工作时间就会加倍。一个例子是逐个元素遍历数组元素,直到找到结果。或者添加数组的所有元素

    O(1)表示无论输入量如何,函数将花费相同的时间。在散列中查找值时会看到这一点。它是一个索引查找,因此不必遍历每个元素

    类似于O(n^2)的意思是努力与所涉及的元素数量的平方成正比。当运行所有元素组合时,您将看到这一点。因此,一个10的数组将为一个具有2个参数的函数提供100个不同的可能输入


    搜索有序数组可能在O(log(n))中完成,因为您可以猜测一个元素,然后消除一半,而不必搜索它们。

    当某个元素为O(n)时,这意味着预期时间与输入中的元素数成正比。这意味着,如果您将输入加倍,那么您的预期工作时间就会加倍。一个例子是逐个元素遍历数组元素,直到找到结果。或者添加数组的所有元素

    O(1)表示无论输入量如何,函数将花费相同的时间。在散列中查找值时会看到这一点。它是一个索引查找,因此不必遍历每个元素

    类似于O(n^2)的意思是努力与所涉及的元素数量的平方成正比。当运行所有元素组合时,您将看到这一点。因此,一个10的数组将为一个具有2个参数的函数提供100个不同的可能输入


    搜索有序数组可能在O(log(n))中完成,因为您可以猜测一个元素,然后消除一半,而不必搜索它们。

    这取决于您的算法。例如,如果我想在数组中使用一个元素,不管大小如何,都需要相同的时间。因为这是花时间。但是,如果要使用需要O(N)时间的算法:

    阵列越大,算法运行越慢。 有一种情况是这样的

    SomeBoredPseudocode(A)
    if(A.size()>100)
        error "oops, I don't need such a big array"
    i=100;
    if i==A.size()
        exit
    else
        i=i-1
    

    这个需要O(100-N)时间。

    这取决于您的算法。例如,如果我想在数组中使用一个元素,不管大小如何,都需要相同的时间。因为这是花时间。但是,如果要使用需要O(N)时间的算法:

    阵列越大,算法运行越慢。 有一种情况是这样的

    SomeBoredPseudocode(A)
    if(A.size()>100)
        error "oops, I don't need such a big array"
    i=100;
    if i==A.size()
        exit
    else
        i=i-1
    

    这个需要O(100-N)的时间。

    N是固定的,您不能将其设置为1:“是所有大小为N的输入中最便宜的”。最佳情况和最坏情况仅取决于输入的类型,输入的大小必须为n


    例如,如果在n个元素之间进行线性搜索,最好的情况是在第一次尝试时立即找到它,最坏的情况是必须查看所有n个元素。

    n是固定的,不能将其设置为1:“在大小为n的所有输入中最便宜”。最佳情况和最坏情况仅取决于输入的类型,输入的大小必须为n


    例如,如果在n个元素之间进行线性搜索,最好的情况是第一次尝试就立即找到它,最坏的情况是必须查看所有n个元素。

    问题是,这里的case不是输入的数量。当然,若您对一个元素进行排序,那个么它将是最好的。如果在一个元素列表中搜索,则搜索速度会更快。我们概括了这个概念,记住输入是
    n
    ——在这个分析中它是固定的w.r.t。我们不能说带有1个元素的mergesort比带有2个元素的quicksort快。这不是一个有效的比较。话虽如此,

    • 最佳情况:需要最快时间完成的情况,条件和输入都是完美的,如算法所预期的最佳

    • 最坏情况:当输入是这样的情况,我们将运行到一个更高的时间

    • 平均情况:算法在不同的输入上运行多次(并不是说它们的大小会不同——不会。大小固定在
      n
      )。然后我们将计算所有运行时间的平均值。取所有输入(该给定大小的
      n
      )的平均值,用概率分布加权

    所以要回答你的问题-这是我们谈论的输入类型。输入的属性,例如:-

    对于快速排序,最佳情况是
    O(nlongn)
    最坏情况
    O(n^2)
    ,平均情况是
    O(nlogn)
    。(选择轴作为数字的第一个元素时,会出现最坏的情况)

    以这个想法为例,在这里我们不考虑输入的数量。快速排序的最佳情况发生在我们选择hap的轴时