标签: c# .net
在对this的回复之后,我很想知道String.Split()的运行时间是什么
string source = "source string;this,"; //length n string[] splitted = source.Split(' ',',',';'); //delimiter array of length m
是O(m * n)吗?
答案 0 :(得分:5)
根据this帖子,它是 O(N):
在内部,它使用2遍例程。在第一遍中,发现并存储分隔符的索引。在第二遍中,通过重复调用Substring并使用先前保存的索引将结果存储在输出数组中来“拆分”字符串。 因此,该算法实际上是O(N),因为它正在通过输入字符串进行线性传递。
在内部,它使用2遍例程。在第一遍中,发现并存储分隔符的索引。在第二遍中,通过重复调用Substring并使用先前保存的索引将结果存储在输出数组中来“拆分”字符串。
因此,该算法实际上是O(N),因为它正在通过输入字符串进行线性传递。
注意:上述陈述的作者似乎是SO user - 也许他可以提供更详细的答案。
如果您想自行查看来源,请下载 ILSpy 等工具,引用mscorlib并搜索Split实施。
mscorlib
Split