我想从用户做一个二级数组输入并使那些数字从低到高升序,我找不到错误 我可以在数组中使用一个可以很容易的元素来执行此代码,但我希望使用两个元素进行此升序。
这是我的代码
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
我需要帮助:)
答案 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,以使这更容易/更有效。