如何返回C#中包含最大元素的数组?

the*_*ist 5 c# linq arrays algorithm

我有多个int数组:

1) [1 , 202,4  ,55]
2) [40, 7]
3) [2 , 48 ,5]
4) [40, 8  ,90]
Run Code Online (Sandbox Code Playgroud)

我需要获得所有位置中数字最大的数组.在我的情况下,这将是阵列#4.说明:

  • 数组#2,#4在第一个位置具有最大数字,因此在第一次迭代后将返回这两个数组([40,7]和[40,8,90])
  • 现在在比较前一次迭代返回数组的第二个位置后,我们将获得数组#4,因为8> 7
  • 等等...

你能建议一个有效的算法吗?与Linq合作会更好.

UPDATE

长度没有限制,但只要任何位置的某个数字更大,所以此数组是最大的.

Ale*_*rov 0

我建议“二叉搜索树”。它允许快速访问最小和最大元素。

http://en.wikipedia.org/wiki/Binary_search_tree

每个数组需要一棵树,以及组合数组的一棵树。

如果您打算让树变得更大,您还可以搜索“红黑 BST”算法来轻松优化树。

编辑:

普通的 BST 本身很快,但是当添加元素时,树会变得非常不平衡 - 例如:如果每个新添加的变量的值平均而言都大于前一个变量,则到达最大值的路径将变得越来越长,而达到最小值的路径仍然很短。红黑 BST 是平衡的 - 到最远元素(包括最小和最大)的路径仍然同样短。有一种更快的 BST 类型,但据我所知,它们很难编码。

但如果你打算使用红黑 BST,我建议你首先掌握常用的 BST。