Как найти наименьшее значение в 2d динамическом массиве

#c#

Вопрос:

Я пытаюсь найти наименьшее число в динамическом 2d массиве, но я попал в блок и не могу понять, как это сделать. Я сделал всю настройку и заполнил все значения.

         using System;

namespace _2D_Array
{
   class Program
   {
       static void Main(string[] args)
       {
           // Create integers n and r and set up the 2D array

           int n = 5;
           int[,] a;
           int R = 50;
           int x;
           
           a = new int[n   1, n   1];

           // Create number input randomizer

           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);

           // Print array with random numbers to screen to check set up is correct for i and j

           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();
           }
           // Get Search Value

           Console.Write("What's the value to look for? ");
           x = int.Parse(Console.ReadLine());

           // look through the array

           for (int i = 1; i <= n;   i)
           {
               for (int j = 1; j <= n;   j)

           // If the element is found
                   if (a[i, j] == x)
                   {
                       Console.Write("Element found at ("   i   ", "   j   ")n");
                   }
               }
           Console.Write(" Element not found");
           
   ```
 

Это все, что у меня пока есть. в конце концов, я хочу, чтобы у меня было наименьшее
значение из набора случайных чисел, установленных в моем массиве 5×5.

 


 

Комментарии:

1. Попробуйте назначить min первое значение в массиве вместо 0. Вы также можете инициализировать его значением, которое, как вы знаете, больше любого значения в массиве, например Int32.MaxValue . Вы уверены, что хотите использовать <= вместо < в своих циклах? Большинство обычных циклов, подобных этому , использовали < бы, но так как большая часть вашего кода отсутствует, трудно сказать наверняка.

2. Что такое n ? И что это за тип a ?

3. n-это значение int, а a-это просто имя моего массива

Ответ №1:

Прежде всего, отформатируйте свой код: трудно читаемый код трудно отлаживать.

Часто мы можем запросить массив с помощью Linq:

   using System.Linq;

  ... 

  int min = a.OfType<int>().Min();       

  Console.Write($"The smallest element is {min}");
 

Если вам нужны старые добрые вложенные циклы:

   // not 0! What if min = 123?
  // Another possibility is min = a[0, 0]; - min is the 1st item 
  int min = int.MaxValue; 

  // note a.GetLength(0), a.GetLength(0): n is redundant here
  // and there's no guarantee that we have a square array
  for (int r = 0; r < a.GetLength(0);   r)
    for (int c = 0; c < a.GetLength(1);   c)
      min = Math.Min(min, a[r, c]); 

  Console.Write($"The smallest element is {min}");