C语言中如何用二维数组对学生的学号和成绩进行选择法排序
时间: 2025-01-03 15:44:55 浏览: 12
在C语言中,对二维数组进行选择排序通常涉及到两层循环。首先假设我们要对一个学生信息数组按照成绩对学生进行升序排序,数组的结构可能是这样的:
```c
typedef struct {
int student_id; // 学号
float score; // 成绩
} Student;
Student students[ROW][COLUMN]; // ROW 表示行数,COLUMN 表示每行的学生数量
// 选择排序函数
void selectionSort(Student* arr, int rows, int cols) {
for (int i = 0; i < rows; i++) { // 遍历每一行
int minIndex = i;
for (int j = i + 1; j < rows; j++) { // 内层循环找到当前行最小的成绩索引
if (arr[j].score < arr[minIndex].score)
minIndex = j;
}
// 如果找到了比已选元素小的,则交换位置
if (minIndex != i) {
Student temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
```
在这个例子中,`selectionSort`函数接受指向二维数组首元素的指针、行数和列数作为参数。外层循环遍历每一行,内层循环在当前行里找到最小成绩的学生并记录其索引。如果找到更小的,就将它与当前行的起始位置进行交换。
阅读全文