如何找到时间复杂度?

时间:2012-04-29 11:56:55

标签: performance algorithm big-o time-complexity

  

可能重复:
  Time Complexity for an algorithm

在计算以下算法的时间复杂度时,我的解释是否正确?

  • 正在使用HashSet moduleMarksheetFiles来添加包含指定的moduleName的文件。 -marksheetFiles是一个Hashset。 -if模块是'Maths',然后任何带有'Maths'模块的标记表都会被添加到HashSet中。

    for (File file: marksheetFiles){
         while(csvReader.readRecord()){
             String moduleName = csvReader.get(ModuleName);
    
             if (moduleName.equals(module)){
                   moduleMarksheetFiles.add(file);
             }
         }
     }
    
  • 设m为文件数

  • 设k为每个文件的平均记录数。
  • 由于每个文件只添加一次,因为HashSet不允许重复。 HashSet.add()平均为O(1),最坏情况为O(n)。
  • 搜索具有指定moduleName的记录涉及将文件中的每条记录与moduleName进行比较,将采取O(n)步骤。

因此,平均时间复杂度为:O((m * k)^ 2)。

这是对的吗?

另外,你会如何计算最坏的情况?

感谢。

PS。这不是功课,只是分析我的系统算法来评估性能。

0 个答案:

没有答案