You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#动态二维数组中查找最小元素值

C# 二维数组求最小值实现方案

实现逻辑

你已完成二维数组的初始化、随机数填充和打印逻辑,新增求最小值功能可以通过以下两种方式实现:

  • 手动遍历实现:无需引入额外命名空间,逻辑直观易懂
    1. 初始化最小值变量为int.MaxValue(int类型的最大值,保证所有有效数组元素都小于初始值)
    2. 逐一遍历数组所有有效元素,每次将当前元素和记录的最小值对比,若更小则更新最小值,可同步记录最小值对应的坐标
  • 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:54:02