如果没有现有的方法(如list.Add),如何在多维数组中找到第5或第7或第15大元素--如果您用c#编写它,我会很高兴的。
int[,,,] x =new int[100, 20, 35, 200];
...
int indis = 0;
int toplam = 0;
int enss = 0;
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 20; j++) {
toplam = 0;
for (int k = 0; k < 35; k++) {
for (int l = 0; l < 200; l++) {
toplam += x[i, j, k, l];
}
}
if (toplam > enss) {
enss = toplam;
indis = j;
}
}
}发布于 2022-11-05 10:35:30
您可以尝试在Linq的帮助下进行查询(如果需要,让.NET使用Add )。关键是将多维数组T[,,,]视为IEnumerable<T>;我们可以为此使用OfType()。有了IEnumerable<T>,我们就能解决剩下的问题。要找到最大项,只需调用Max()
using System.Linq;
...
int[,,,] x = new int[100, 20, 35, 200];
...
int max = x.OfType<int>().Max();如果您想要找到n第四大项,可以排序、跳过n - 1项并选择第一个:
...
int n = 7;
int maxN = x
.OfType<int>()
.OrderByDescending(item => item)
.Skip(n - 1)
.First();发布于 2022-11-05 10:50:10
使用linq:
var table = Enumerable.Range(0, x.GetLength(0))
.SelectMany((a, i) => Enumerable.Range(0, x.GetLength(1))
.SelectMany((b, j) => Enumerable.Range(0, x.GetLength(2))
.SelectMany((c, k) => Enumerable.Range(0, x.GetLength(3)
.Select((d, l) => new { x = x[i, j, k, l], i = i, j = j, k = k, l = l }))))
.OrderByDescending(x => x.x);https://stackoverflow.com/questions/74326969
复制相似问题