我想按降序对化学名称的二维数组及其相应的数字进行排序。该算法的前半部分是通过将氮气放在顶部并将硫磺放在第二个顶部来工作的。然而,最后两个,即氢气和氨气,并没有相互交换行。
String[,] chem = new String[4, 2];
chem[0, 0] = "Hydrogen";
chem[0, 1] = "221";
chem[1, 0] = "Sulphur";
chem[1, 1] = "431";
chem[2, 0] = "Ammonia";
chem[2, 1] = "332";
chem[3, 0] = "Nitrogen";
chem[3, 1] = "688";
string temp, temp2;
int key = 0;
for (int i = 1; i < 4; i++)
{
for (int j = 0; j < 2; j++)
{
key = 0;
for (int p = i - 1; p >= 0 && key != 1;)
{
if (int.Parse(chem[i, 1]) > int.Parse(chem[j, 1]))
{
temp = chem[i, 1];
chem[i, 1] = chem[j, 1];
chem[j, 1] = temp;
temp2 = chem[i, 0];
chem[i, 0] = chem[j, 0];
chem[j, 0] = temp2;
}
else { key = 1; }
}
}
}
最佳答案
几点:
- 你的变量
p
没有在任何地方被引用或更新,所以最里面的for
循环有效地做while(key != 1)
- 你的
j = 0
至j < 2
for 循环最初看起来很合理(i 和 j 通常用于不同的索引,并且您的数组是new String[4, 2];
)-但您实际上是将它们用于相同的索引。你可能想运行j
来自j = 0
至j < 4
而不是j = 0
至j < 2
无法对此进行测试 - 抱歉
关于c# - 如何按行对二维数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58077277/