首页 > 解决方案 > 优化此代码并找到每个 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    
         */
    }
}

标签: c#

解决方案


如果将多维数组变成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();

推荐阅读