c语言编程:利用“选择排序算法“对结构体数组进行排序补充函数 sortByChoose()的剩余部分,其要求是利用选择排序算法根据学生成绩(score)实现对结构体数组元素降序排序。 函数接口定义: void sortByChoose(struct Student *pData,int n);
时间: 2024-02-25 09:56:17 浏览: 98
好的,我会为你补充函数sortByChoose()的剩余部分。以下是完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Student {
char name[20];
int score;
};
void sortByChoose(struct Student *pData, int n) {
int i, j, max_index;
struct Student temp;
for (i = 0; i < n - 1; i++) {
max_index = i;
for (j = i + 1; j < n; j++) {
if (pData[j].score > pData[max_index].score) {
max_index = j;
}
}
if (max_index != i) {
temp = pData[i];
pData[i] = pData[max_index];
pData[max_index] = temp;
}
}
}
int main() {
struct Student stu[5] = {
{"Tom", 89},
{"Jerry", 76},
{"Mike", 92},
{"Mary", 85},
{"John", 78}
};
int i;
printf("Before sorting:\n");
for (i = 0; i < 5; i++) {
printf("%s: %d\n", stu[i].name, stu[i].score);
}
sortByChoose(stu, 5);
printf("\nAfter sorting:\n");
for (i = 0; i < 5; i++) {
printf("%s: %d\n", stu[i].name, stu[i].score);
}
return 0;
}
```
函数sortByChoose()使用选择排序算法,对结构体数组中的元素按照学生成绩(score)进行降序排序。在函数中,我们定义了三个变量:i、j和max_index。i和j用于循环遍历数组,max_index用于存储当前最大值的下标。我们首先将max_index初始化为i,然后在内层循环中查找最大值的下标,并将其存储在max_index中。如果max_index不等于i,说明第i个元素不是当前最大值,需要将其与最大值交换位置。最后,函数执行完毕后,结构体数组stu中的元素就已经按照学生成绩降序排列了。
我希望这个代码能够帮助到你,如果你有任何问题,请随时问我!
阅读全文