我有这样排序2在一个行基于该值维阵列
1 3 9 2 7 8 9
120 70 76 190 300 50 40
数据如何可以基于第二行对数组进行排序,并从第一行返回最大数量的值。我的意思是,输出变成>
7 2 1 9 3 8 9
300 190 120 76 70 50 40
而且我得到7
作为输出。
我有这样排序2在一个行基于该值维阵列
1 3 9 2 7 8 9
120 70 76 190 300 50 40
数据如何可以基于第二行对数组进行排序,并从第一行返回最大数量的值。我的意思是,输出变成>
7 2 1 9 3 8 9
300 190 120 76 70 50 40
而且我得到7
作为输出。
首先,我会从矩形阵列中获取数据,使其更容易使用。为此,首先将数据转换为List<Tuple<int, int>>
,因为它更容易处理。
int[,] rawData = { { 1, 3, 9, 2, 7, 8, 9 }, { 120, 70, 76, 190, 300, 50, 40 } };
var data = new List<Tuple<int, int>>();
for(int i = 0; i < rawData.GetLength(1); i++)
{
data.Add(new Tuple<int, int>(rawData[0, i], rawData[1, i]));
}
然后,它只是使用Linq查询来获取您想要的数据的问题。
var result = data.OrderByDescending(x => x.Item2).First().Item1;
如果你想知道答案,“什么是最大数量现在”(或换种方式,维持秩序,而在排序后处理 - 当心它有性能损失),那么SortedList
可以派上用场!
int[] a = { 1, 3, 9, 2, 7, 8, 9 };
int[] b = { 120, 70, 76, 190, 300, 50, 40 };
var sortedList = new SortedList<int,int>();
for (int i = 0; i < a.Length; i++)
{
sortedList[b[i]] = a[i];
}
Console.WriteLine(sortedList.Last().Value);
(如果你想看看有什么电流最大值为您添加数据只是移动WriteLine
到循环的内部)
@Mark E,我已经尝试使用循环,我可以得到结果,但效率不高。我正在寻找一些代码少的东西(比如方法)。 –
为什么在第一个地方使用2维数组?正好2行?它看起来像一个单维阵列的候选人,你不觉得吗? –
我建议发布代码,你有这个作品,然后有人可以看看可以做些什么,使其更有效。你怎么评判效率? –