我想将此二维化学物名称数组及其对应的数字按降序排序。该算法的前半部分通过将氮气放在顶部,将硫放在第二个顶部来工作。但是,最后两个,即氢气和氨气,彼此之间并不交换行。
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
的循环看起来很明智(i和j通常用于不同的索引,而数组是new String[4, 2];
)-但实际上您是将它们用于同一索引。您可能希望将j
从j = 0
运行到j < 4
,而不是将j = 0
运行到j < 2
尚未能够对此进行测试-道歉