如何从最小到最大对矩阵的每一行进行排序,然后找到矩阵的峰值?

  • 本文关键字:排序 然后 一行 c#
  • 更新时间 :
  • 英文 :


我需要写一个程序,随机取1到100个整数,然后我需要取这个程序的转置,然后我需要对这个矩阵(每一行本身)从小到大排序。最后,我需要找到这个矩阵的峰值。这是我为这个节目写的东西。现在,它创建一个随机矩阵(20x5),然后取它的转置。你能帮我找到它的峰值,然后对每一行进行排序吗?

p。使用类是强制性的!

using System;
namespace my_matrix;
    class Program
    {
        public int[,] Create(int[,] myarray, int Row, int Clm)
        {
            Random value = new Random();
            myarray = new int[Row, Clm];
            int i = 0;
            int j = 0;
            while (i < Row)
            {
                while (j < Clm)
                {
                    myarray[i, j] = value.Next(1, 100);
                    j++;
                }
                i++;
                j = 0;
            }
            return myarray;
        }
        public int[,] Print(int[,] myarray, int Row, int Clm)
        {
            Console.WriteLine("=====ARRAY=====");
            for (int a = 0; a < Row; a++)
            {
                for (int b = 0; b < Clm; b++)
                {
                    Console.Write(myarray[a, b] + " ");
                }
                Console.WriteLine();
            }
            return null;
        }
        public int[,] Transpose(int[,] myarray, int Row, int Clm)
        {
            for (int b = 0; b < Clm; b++)
            {
                for (int a = 0; a < Row; a++)
                {
                    Console.Write(myarray[a, b] + " ");
                }
                Console.WriteLine();
            }
            return myarray;
        }
        public int[,] Print_Transpose(int[,] myarray, int Row, int Clm)
        {
            Console.WriteLine("=====TRANSPOSE=====");
            for (int b = 0; b < Clm; b++)
            {
                for (int a = 0; a < Row; a++)
                {
                    Console.Write(myarray[a, b] + " ");
                }
                Console.WriteLine();
            }
            return null;
        }

        static void Main(string[] args)
        {
            Program x = new Program();
            int[,] myarray = new int[20, 5];
            int[,] a = x.Create(myarray, 20, 5);
            x.Print(a, 20, 5);
            x.Print_Transpose(a, 20, 5);

        }
    }

我不知道如何制作一个从最小到最大排序每一行的类,我也不知道如何创建一个找到矩阵峰值的类。

可以遍历数组,保留maxNum:

public int getMax(int[,] fromArray)
    {
        int maxNum = 0;
        for (int b = 0; b < fromArray.GetUpperBound(1); b++)
        {
            for (int a = 0; a < fromArray.GetUpperBound(0); a++)
            {
                if (maxNum < fromArray[a,b])
                {
                    maxNum = fromArray[a, b];
                }
            }
        }
        return maxNum;
    }

像这样调用函数:

Console.Write("Max number = {0:D}", x.getMax (a));

如果你想要一个排序方法,你可以把所有的值放在一个List中,对它们排序,然后转换回数组。

public int[] SortArray(int[,] fromArray)
    {
        List<int> newList = new List<int>(fromArray.Length);
        
        for (int b = 0; b < fromArray.GetUpperBound(1); b++)
        {
            for (int a = 0; a < fromArray.GetUpperBound(0); a++)
            {
                newList.Add (fromArray[a, b]);
            }
        }
        newList.Sort();
        return newList.ToArray<int>();
    }

最新更新