Complexity theory 线性复杂度与二次复杂度

Complexity theory 线性复杂度与二次复杂度,complexity-theory,big-o,time-complexity,Complexity Theory,Big O,Time Complexity,我只是不确定 如果您的代码可以在以下任一复杂情况下执行: O(n)的序列,例如:两个O(n)的序列 O(n²) 首选版本是可以在线性时间内执行的版本。是否会有这样一个时间,O(n²)的顺序会太多,而O(n²)会更可取?换句话说,对于任何常数C,C x O(n)n,但是严格来说,你不再处理大的O 嗯,似乎有一个渲染错误在重复我帖子中的文字?@jk对我来说渲染很好。另外,对于清晰的答案,+1.:)@jk:你说你不再处理大O是什么意思?见第1点,严格来说,大O只谈论无限输入(或输入变为无限的趋势),显

我只是不确定

如果您的代码可以在以下任一复杂情况下执行:

  • O(n)的序列,例如:两个O(n)的序列
  • O(n²)
  • 首选版本是可以在线性时间内执行的版本。是否会有这样一个时间,O(n²)的顺序会太多,而O(n²)会更可取?换句话说,对于任何常数C,C x O(n)
    为什么?影响条件的因素有哪些,使得选择O(n²)复杂度更好?

    如果常数C大于n的值,那么O(n²)算法会更好。

    在O表示法中总是有一个隐含常数,所以是的,对于足够小的n,O(n^2)可能是可能比O(n)快。如果O(n)的常数比O(n^2)的常数小得多,就会发生这种情况。

    cxo(n) 当C大而n小时,则cxo(n)>O(n²)。 然而,C总是恒定的,因此当n变成一个大数字时,C x O(n)
    因此,当n较大时,O(n)总是比O(n²)好。

    我认为这里有两个问题;首先是符号所表示的内容,其次是在实际程序中实际测量的内容

  • 大O被定义为一个极限n->无穷大,所以对于大O,无论任何有限常数,O(n)
  • 正如其他人指出的那样,实际程序只处理一些有限的输入,因此很有可能为n选择一个足够小的值,使得c*n>n^2,即c>n,但是严格来说,你不再处理大的O


  • 嗯,似乎有一个渲染错误在重复我帖子中的文字?@jk对我来说渲染很好。另外,对于清晰的答案,+1.:)@jk:你说你不再处理大O是什么意思?见第1点,严格来说,大O只谈论无限输入(或输入变为无限的趋势),显然没有真正的程序停止这一点,你的意思是相反的:O(n^2)比O(n)快