用C语言对10个学生信息按成绩进行降序排序
时间: 2024-01-17 07:05:54 浏览: 29
好的,这里提供一种基于快速排序算法的实现方式:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char name[20];
int score;
};
void swap(struct student *a, struct student *b) {
struct student tmp = *a;
*a = *b;
*b = tmp;
}
int partition(struct student array[], int left, int right) {
int pivot = array[right].score;
int i = left - 1;
for (int j = left; j < right; j++) {
if (array[j].score >= pivot) {
i++;
swap(&array[i], &array[j]);
}
}
swap(&array[i+1], &array[right]);
return i+1;
}
void quick_sort(struct student array[], int left, int right) {
if (left < right) {
int pivot_index = partition(array, left, right);
quick_sort(array, left, pivot_index-1);
quick_sort(array, pivot_index+1, right);
}
}
int main() {
struct student stu[10] = {
{"Alice", 90},
{"Bob", 80},
{"Charlie", 70},
{"David", 60},
{"Emily", 50},
{"Frank", 40},
{"Grace", 30},
{"Henry", 20},
{"Ivy", 10},
{"Jack", 0},
};
quick_sort(stu, 0, 9);
printf("按成绩降序排列后的结果:\n");
for (int i = 0; i < 10; i++) {
printf("%s %d\n", stu[i].name, stu[i].score);
}
return 0;
}
```
以上代码实现了对10个学生信息按照成绩进行降序排序,使用了快速排序算法。