如何在C#动态二维数组中查找最小元素值
C# 二维数组求最小值实现方案
实现逻辑
你已完成二维数组的初始化、随机数填充和打印逻辑,新增求最小值功能可以通过以下两种方式实现:
- 手动遍历实现:无需引入额外命名空间,逻辑直观易懂
- 初始化最小值变量为
int.MaxValue(int类型的最大值,保证所有有效数组元素都小于初始值) - 逐一遍历数组所有有效元素,每次将当前元素和记录的最小值对比,若更小则更新最小值,可同步记录最小值对应的坐标
- 初始化最小值变量为
- LINQ快捷实现:代码更简洁,需要额外引入
System.Linq命名空间,直接调用内置方法即可获取最小值
另外你现有代码存在一处小问题:不管是否查询到用户输入的目标值,最后都会固定输出「Element not found」,可以新增一个bool类型的标记变量修正这个问题。
完整可运行代码
using System; // 如果用LINQ方法请取消下面这行注释 // using System.Linq; namespace _2D_Array { class Program { static void Main(string[] args) { // 初始化二维数组参数 int n = 5; int[,] a; int R = 50; int x; a = new int[n + 1, n + 1]; // 填充随机数 Random r = new Random(); for (int i = 1; i <= n; ++i) for (int j = 1; j <= n; ++j) a[i, j] = r.Next(1, R); // 打印数组 Console.Write(" "); for (int i = 1; i <= n; ++i) Console.Write(i.ToString("00" + " ")); Console.WriteLine(); Console.WriteLine(); for (int i = 1; i <= n; ++i) { Console.Write(i.ToString("00" + " ")); for (int j = 1; j <= n; ++j) Console.Write(a[i, j].ToString("00" + " ")); Console.WriteLine(); } // ====== 新增:求数组最小值 ====== // 方法1:手动遍历实现 int minVal = int.MaxValue; int minI = 0, minJ = 0; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { if (a[i, j] < minVal) { minVal = a[i, j]; minI = i; minJ = j; } } } Console.WriteLine($"\n数组最小值为:{minVal},所在坐标为({minI}, {minJ})"); // 方法2:LINQ实现,取消注释即可用,无需写遍历逻辑 // int minVal = a.Cast<int>().Min(); // Console.WriteLine($"\n数组最小值为:{minVal}"); // 原有查询逻辑修正 Console.Write("请输入要查找的数值:"); x = int.Parse(Console.ReadLine()); bool isFound = false; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { if (a[i, j] == x) { Console.WriteLine($"元素找到,坐标为({i}, {j})"); isFound = true; } } } if (!isFound) { Console.WriteLine("未找到该元素"); } } } }
内容的提问来源于stack exchange,提问作者Paul2021
相关产品推荐
相关产品推荐

