c# 如何对二维数组值进行排序
c# how to sort 2D array values
我有 2 个数组
string[,] marksMatrix = new string[5, 4];
string[] studentIDArr = new string[5];
分数矩阵有4个科目的5个学生的分数,他们的学生ID存储在studentIDArr中。当我显示每个学生的学号和分数时,如何按学号升序排列?
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";
}
一个可能的解决方案是:
- 声明一个新的字符串向量(我们称之为 studentIDArrSorted)
- 对 studentIDArr 进行排序并将其存储在 studentIDArrSorted 中,而不改变 studentIDArr 的顺序。
- 现在对 studentIDArrSorted 取一个 for
- 对于 studentIDArrSorted[i],搜索是 studentIDArr 中的位置。
- 从 marksMatrix 中打印相应的列。
示例:
初始列表:“3”、“4”、“2”[=24=]
排序列表:“2”、“3”、“4”
“2”在列表中的旧位置是 3,因此您必须打印矩阵的第 3 行。
注意:我假设 ID 是唯一的。
一个更简单的解决方案是将两个数组(标记和 ID)存储在一个对象中。这将消除所有开销。
我有 2 个数组
string[,] marksMatrix = new string[5, 4];
string[] studentIDArr = new string[5];
分数矩阵有4个科目的5个学生的分数,他们的学生ID存储在studentIDArr中。当我显示每个学生的学号和分数时,如何按学号升序排列?
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";
}
一个可能的解决方案是:
- 声明一个新的字符串向量(我们称之为 studentIDArrSorted)
- 对 studentIDArr 进行排序并将其存储在 studentIDArrSorted 中,而不改变 studentIDArr 的顺序。
- 现在对 studentIDArrSorted 取一个 for
- 对于 studentIDArrSorted[i],搜索是 studentIDArr 中的位置。
- 从 marksMatrix 中打印相应的列。
示例: 初始列表:“3”、“4”、“2”[=24=] 排序列表:“2”、“3”、“4”
“2”在列表中的旧位置是 3,因此您必须打印矩阵的第 3 行。
注意:我假设 ID 是唯一的。
一个更简单的解决方案是将两个数组(标记和 ID)存储在一个对象中。这将消除所有开销。