如何计算使用框架库函数的程序的复杂性

时间:2013-02-20 09:16:51

标签: c#

public void ABC()
    {
         string inputString = "Programming C#";

         // Complexty = O(1) or O(n)  
            int length = inputString.Length;

        // Complexity = O(1) or O(n)
           bool found = inputString.Contains('#');
    }

上面的程序使用内置属性来获取长度并包含函数。内置函数将使用循环来查找字符串中的字符,但是当我们直接使用该函数时,我们是否将该函数调用视为O(1)?

感谢。

2 个答案:

答案 0 :(得分:2)

假设n是字符串的长度,那么您需要包含所有被调用函数的真实复杂性。否则,您将无法获得整体复杂性的正确结果。

答案 1 :(得分:0)

不太确定,但我猜它会是O(n)而不是O(1)。

有一种统计方法可以确定它(差不多)...编写代码以编程方式增加字符串长度,比如第一个字符串是“p”,第二个字符串 - “pr”,第三个字符串 - “pro”..等等,以获取大量数据(如果您还想检查包含方法,则将'#'嵌入到字符串中)...记录每个操作的开始和结束时间,并绘制时间响应增加字符串长度...

响应应该与程序使用的任何逻辑的复杂性密切对应。毕竟,这就是复杂性表示......响应时间相对于输入大小的增长率。