我有這樣排序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行?它看起來像一個單維陣列的候選人,你不覺得嗎? –
我建議發佈代碼,你有這個作品,然後有人可以看看可以做些什麼,使其更有效。你怎麼評判效率? –