c#如何排序2D数组值

时间:2015-06-24 22:02:15

标签: c# arrays sorting 2d

我有2个阵列

string[,] marksMatrix = new string[5, 4];
string[] studentIDArr = new string[5];

标记矩阵有4个科目的5名学生的标记,他们的学生ID存储在studentIDArr中。当我显示每个学生的学生ID和标记时,如何按学生ID的升序排序?

textBox2.Text = "StudentID\tOOAD\tDWA\tDB\tWAD\r\n";
int rowlength = marksMatrix.GetLength(0);
int collength = marksMatrix.GetLength(1);

for (int y = 0; y < rowlength; y++) {
  textBox2.Text += studentIDArr[y];
  for (int x = 0; x < collength; x++) {
    textBox2.Text += "\t" + marksMatrix[y,x];
  }
  textBox2.Text += "\r\n";
}

1 个答案:

答案 0 :(得分:0)

可能的解决方案是:

  1. 声明一个新的字符串向量(让我们称之为studentIDArrSorted)
  2. 对studentIDArr进行排序并将其存储在studentIDArrSorted中,而不更改studentIDArr的顺序。
  3. 现在请参加studentIDArrSorted
  4. 对于studentIDArrSorted [i],搜索是studentIDArr中的位置。
  5. 从marksMatrix打印相应的列。
  6. 实施例: 初始列表:&#34; 3&#34;,&#34; 4&#34;,&#34; 2&#34;
    排序列表:&#34; 2&#34;,&#34; 3&#34;,&#34; 4&#34;

    &#34; 2&#34;的旧位置在列表中是3,所以你必须从矩阵打印第3行 注意:我假设ID是唯一的。

    更简单的解决方案是将两个数组(标记和ID)存储在对象中。这将消除所有开销。