C# - 创建一个Ascending辅助数组

时间:2016-10-21 22:59:31

标签: c# arrays

我想从用户做一个二级数​​组输入并使那些数字从低到高升序,我找不到错误 我可以在数组中使用一个可以很容易的元素来执行此代码,但我希望使用两个元素进行此升序。

这是我的代码

class Program
    {
        static void Main(string[] args)
        {
            int[,] Matrice = new int[2, 3];
            int i, j, m, n, temp;

            for (i = 0; i < 2; i++)
            {
                for (j = 0; j < 3; j++)
                {
                    Console.WriteLine("Enter The Number :(" + i + "," + j + ")");
                    Matrice[i, j] = int.Parse(Console.ReadLine());
                }
            }

            for (i = 0; i < 2; i++)
                for (j = 0; j < 3; j++)

            for (m = i + 1; m < 2; m++)
               for (n = j + 1; n < 3; n++)

            if (Matrice[i, j] > Matrice[m,n])
            {
                temp = Matrice[i,j];
                Matrice[i, j] = Matrice[m, n];
                Matrice[m, n] = temp;
            }

            for (i = 0; i <2; i++)
            {
                for (j = 0; j <3; j++)
                {
                    Console.WriteLine("Ascending from low to high :(" + i + "," + j + ") est " + Matrice[i, j]);
                }
            }
            Console.ReadKey();
        }
    }

我的输出是错误的:

Enter The Number :(0,0)
5
Enter The Number :(0,1)
3
Enter The Number :(0,2)
8
Enter The Number :(1,0)
15
Enter The Number :(1,1)
3
Enter The Number :(1,2)
9
Ascending from low to high :(0,0) est 3
Ascending from low to high :(0,1) est 3
Ascending from low to high :(0,2) est 8
Ascending from low to high :(1,0) est 15
Ascending from low to high :(1,1) est 5
Ascending from low to high :(1,2) est 9

我需要帮助:)

1 个答案:

答案 0 :(得分:0)

首先,从i + 1开始,跳过数组第二部分的第一项。您想要遍历每个元素并进行比较,所以只需使用:

for (m = 0; m < 2; m++)
    for (n = 0; n < 3; n++)

其次,您希望值升序,当前代码按降序排序。要解决此问题,只需更改“&gt;”即可到'&lt;'

if (Matrice[i, j] < Matrice[m, n])

堆叠的for循环现在看起来像这样:

for (i = 0; i < 2; i++)
            for (j = 0; j < 3; j++)
                for (m = 0; m < 2; m++)
                    for (n = 0; n < 3; n++)
                        if (Matrice[i, j] < Matrice[m, n])
                        {
                            temp = Matrice[i, j];
                            Matrice[i, j] = Matrice[m, n];
                            Matrice[m, n] = temp;
                        }

如果我理解你的问题,哪个应该做你想做的事。

PS:正如BradleyDotNET所说,你可能想看看OrderBy,以使这更容易/更有效。