1
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)?

谢谢。

4

2 回答 2

2

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

于 2013-02-20T09:18:56.850 回答
0

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

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

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

于 2013-02-20T09:30:49.323 回答