c# - 如何按行对二维数组进行排序?

标签 c# sorting

我想按降序对化学名称的二维数组及其相应的数字进行排序。该算法的前半部分是通过将氮气放在顶部并将硫磺放在第二个顶部来工作的。然而,最后两个,即氢气和氨气,并没有相互交换行。

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 = 0j < 2 for 循环最初看起来很合理(i 和 j 通常用于不同的索引,并且您的数组是 new String[4, 2]; )-但您实际上是将它们用于相同的索引。你可能想运行 j来自 j = 0j < 4而不是 j = 0j < 2

无法对此进行测试 - 抱歉

关于c# - 如何按行对二维数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58077277/

相关文章:

c# - Linq 实体 (EF 4.1) : How to do a SQL LIKE with a wildcard in the middle ( '%term%term%' )?

c# - 使用 Moq 模拟指南

c# - 为什么 Raven 会为我的新文档生成一个已经存在的文档 ID?

java - 对对象流进行排序并获取第一个并打印出来

c# - 如何在代码隐藏中设置 Validation.ErrorTemplate?

c# - 断开用户与托管网络的连接

php - 转置列结构不一致的二维数组

arrays - 如何在 MATLAB 中对结构数组进行排序?

python - 在列表的开头和结尾强制执行项目

c - C 中的数组排序函数