算法中的Java Big O表示法

时间:2016-05-11 12:00:12

标签: java big-o

我被这个大的O符号问题所困扰。此代码看起来不像O(n),但是循环转动单词时间的数量,因此它基本上不超过20 所以,如果我们说Length(line.split())是常数c,我们可以说O(c.n)= O(n)?

while (this.scannerMainText.hasNextLine()){
        String line = this.scannerMainText.nextLine();
        for (String word : line.split("[.!,\" ]+")) {
           some statements
         }
     }

2 个答案:

答案 0 :(得分:2)

时间复杂度仅基于算法运行的次数;算法中的步骤的实际数量/成本(c,如你所说)不被认为是Big-O表示法。

<强>加

我对理论的边缘情况不太熟悉,如果所有行的长度相等,则可以将内循环的运行时间减少到常数。 通常,此算法将被视为O(mn)。

答案 1 :(得分:2)

是的,循环运行的次数对持续时间的影响可以忽略不计,因此通常在Big-O表示法中没有提到。

例如,如果O(n)循环运行20次,您会认为符号为O(20n),但由于影响很小,因此没有提到Big-O符号,因此O (20n)= O(n)。 O(20n²)= O(n²)等也一样。