2012-01-30 66 views
1

的時間繼響應this,我好奇地知道什麼是String.Split的運行時間()運行string.Split方法

string source = "source string;this,"; //length n 
string[] splitted = source.Split(' ',',',';'); //delimiter array of length m 

它是O(m * n個)?

+0

您可以對此進行基準測試。我當然無法找到有關複雜性的文檔。 – erisco 2012-01-30 17:30:45

+0

@downvoter謹慎解釋? – Nemo 2012-01-30 17:32:06

+1

爲什麼不開放源代碼並觀看? – mydogisbox 2012-01-30 17:33:28

回答

5

根據this螺紋,它的O(N)

在內部,它使用了2遍例程。在第一遍中,分隔符字符的索引被發現並存儲。在第二遍中,通過重複調用Substring將字符串「拆分」並使用先前保存的索引將結果存儲在輸出數組中。

因此,該算法實際上是O(N),因爲它是通過輸入字符串進行線性傳遞。

注:看來,上述聲明的作者是SO user - 也許他可以更詳細的解答幫助。

如果你想自己去查源,下載工具如ILSpy,參考mscorlib和搜索Split實施。

+0

https://social.msdn.microsoft.com/Forums/vstudio/en-US/90d6eeed -b7a3-494a-8c90-5035f8465622 /算法的背後stringsplit法?論壇= netfxbcl – 2016-06-23 09:02:20