簡體   English   中英

多維數組中的快速值總和(C#)

[英]Fast sum of values in a multidimensional array (C#)

使用1D數組,我可以使用sum方法來獲取所有值的總和。

int[] array = {6,3,1};
Console.WriteLine(array.Sum());

使用多維數組(在我的情況下為3D),這是不可能完成的。 顯然我可以全力以赴,但這看起來很冗長,我懷疑它會表現得很糟糕。

有沒有辦法壓扁陣列? 還是一個很好的方式來得到我沒見過的總和?

Sum完全是foreach 他們背后沒有魔力。 如果你是這樣的性能餓使用for代替foreach 您也可以並行執行此操作,此操作可以輕松並行化。

這就行了。

var i = array.SelectMany(j => j).Sum()

你可以像這樣在.net 4中並行化這個

var i = array.AsParallel().SelectMany(k => k).Sum();

為什么foreach表現不好? 您必須至少讀取一次每個值才能計算總和。 沒有辦法解決這個問題(當然,假設是“隨機”值)。 所以也許有更美的方式,但不是更高效的方式(用大O來說 )。

如果你有一個鋸齒狀的數組,並希望你可以使用干凈的代碼

int[][] array = { new []{ 6, 3, 1 }, new []{ 6, 3, 1 } };
Console.WriteLine(array.Sum(i => i.Sum()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM