的時間繼響應this,我好奇地知道什麼是String.Split的運行時間()運行string.Split方法
string source = "source string;this,"; //length n
string[] splitted = source.Split(' ',',',';'); //delimiter array of length m
它是O(m * n個)?
的時間繼響應this,我好奇地知道什麼是String.Split的運行時間()運行string.Split方法
string source = "source string;this,"; //length n
string[] splitted = source.Split(' ',',',';'); //delimiter array of length m
它是O(m * n個)?
根據this螺紋,它的O(N):
在內部,它使用了2遍例程。在第一遍中,分隔符字符的索引被發現並存儲。在第二遍中,通過重複調用Substring將字符串「拆分」並使用先前保存的索引將結果存儲在輸出數組中。
因此,該算法實際上是O(N),因爲它是通過輸入字符串進行線性傳遞。
注:看來,上述聲明的作者是SO user - 也許他可以更詳細的解答幫助。
如果你想自己去查源,下載工具如ILSpy,參考mscorlib
和搜索Split
實施。
https://social.msdn.microsoft.com/Forums/vstudio/en-US/90d6eeed -b7a3-494a-8c90-5035f8465622 /算法的背後stringsplit法?論壇= netfxbcl – 2016-06-23 09:02:20
您可以對此進行基準測試。我當然無法找到有關複雜性的文檔。 – erisco 2012-01-30 17:30:45
@downvoter謹慎解釋? – Nemo 2012-01-30 17:32:06
爲什麼不開放源代碼並觀看? – mydogisbox 2012-01-30 17:33:28