c# - 优化此代码并找到每个 ROW/COLUMN 的 MIN 和 MAX 值的最佳、正确方法是什么
问题描述
我正在努力使这段代码尽可能高效,最好和最正确的方法是什么?此外,我需要找到每列和每行的 MIN 和 MAX 值,并在特定行和列旁边显示值。
代码:
using System;
using System.Linq;
public class Program
{
public static void Main()
{
Random rand = new Random();
int ri, ki;
int i, j;
int max = 1;
int min = 0;
int rndnumber = rand.Next(64, 128);
int[,] array = new int[9, 4]; // Izveido array 9x4 (rin x kol)
for (i = 0; i < 9; i++) //
{
for (j = 0; j < 4; j++)
array[i, j] = rand.Next(1, 100 + 1);
}
for (i = 0; i < 9; i++) //
{
for (j = 0; j < 4; j++)
{
Console.Write("|\t{0}\t ", array[i, j]); // /t - tab
}
Console.WriteLine("\n"); // new line
}
for (i = 0; i < 9; i++) //
{
for (j = 0; j < 4; j++)
if (max < array[i, j]) // Aprekina max
{
max = array[i, j];
}
}
Console.WriteLine("Maksimalais sk tabula: {0}", max);
Console.WriteLine("Min sk tabula: {0}", min);
//rndnumber = rand.Next();
//Console.WriteLine("Hello World {0}", rndnumber);
Console.ReadKey();
/*
Izveidot ka zem katras rindas un kol ir min un max skaitlis
*/
}
}
解决方案
如果将多维数组变成IEnumerable
,则可以在其上使用 Linq:
// Order and use Cast<int>() to get an ordered IEnumerable<int>,
var orderedAscending = from x in array.Cast<int>()
orderby x
select x;
// Use linq First() & Last() to get min and max.
var min = orderedAscending.First();
var max = orderedAscending.Last();
推荐阅读
- r - 特定行列或表子集的 KabelExtra 背景颜色
- airflow - 为什么 Airflow 因 INFO 崩溃 - “任务退出并返回代码 -9”?
- flutter - StreamProvider 不更新状态
- web - 在哪里可以找到设备详细信息的像素比?
- java - byteBuffer.get() & 0xFF 的目的是什么?
- java - 在 javafx 11 中嵌入 SwingNode
- amazon-web-services - 从通过 TCP 侦听的 AWS 经典 ELB 的访问日志中获取 URL?
- arrays - 需要使用带有 OR 的 excel sumifs 并排除 3 个值并将其余值相加
- python - 如何在熊猫中选择多个谷歌表格并将代码应用于所有表格
- angular - Angular Material Dialog 在窗口滚动时更改位置