void Sort_select(STU *p) { for (int i = 0; i < end - 1; i++) { int k = i; for (int j = i + 1; j < end; j++) { if ((*(p + k)).aver > (*(p + j)).aver) { STU s = (*(p + k)); (*(p + k)) = (*(p + j)); (*(p + j)) = s; } } } printf("所有学生的平均成绩从低到高选择排序后的结果:\n"); for (int i = 0; i < end; i++) { printf("%s\t%.2lf\t\n", stu[i].name, stu[i].aver); } }
时间: 2024-04-09 17:27:12 浏览: 52
stu_score_ms.rar_&stu[i].score)_Score!
这段代码是一个选择排序的实现,通过比较学生的平均成绩来进行排序。选择排序的思想是每次选择最小(或最大)的元素放到已排序的部分的末尾。
在函数中,参数`p`是一个指向学生结构体数组的指针。函数中的变量`end`表示数组的长度。
首先,使用两个嵌套的循环进行选择排序。外层循环控制每次选择的起始位置,内层循环用于找到未排序部分中的最小元素,并将其与起始位置元素进行交换。
在内层循环中,变量`k`用于记录当前的最小元素的索引位置。通过比较`p[k].aver`和`p[j].aver`来找到更小的元素,并更新`k`的值。如果找到了比当前最小元素更小的元素,就进行交换操作。
完成排序后,使用`printf`函数打印排序结果,依次输出学生的姓名和平均成绩。
这段代码可以按照学生的平均成绩从低到高进行选择排序,并输出排序后的结果。
阅读全文