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)?
感谢。
答案 0 :(得分:2)
假设n
是字符串的长度,那么您需要包含所有被调用函数的真实复杂性。否则,您将无法获得整体复杂性的正确结果。
答案 1 :(得分:0)
不太确定,但我猜它会是O(n)而不是O(1)。
有一种统计方法可以确定它(差不多)...编写代码以编程方式增加字符串长度,比如第一个字符串是“p”,第二个字符串 - “pr”,第三个字符串 - “pro”..等等,以获取大量数据(如果您还想检查包含方法,则将'#'嵌入到字符串中)...记录每个操作的开始和结束时间,并绘制时间响应增加字符串长度...
响应应该与程序使用的任何逻辑的复杂性密切对应。毕竟,这就是复杂性表示......响应时间相对于输入大小的增长率。