c语言将结构体数组从大到小冒泡排序
时间: 2023-10-13 21:09:19 浏览: 300
以下是将结构体数组按照其中一个成员变量从大到小进行冒泡排序的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char name[20];
int score;
};
void bubble_sort(struct student arr[], int n) {
int i, j;
struct student tmp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (arr[j].score < arr[j + 1].score) {
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main() {
struct student arr[5] = {
{"Tom", 80},
{"Jack", 70},
{"Alice", 90},
{"Bob", 75},
{"Lily", 85}
};
int i;
bubble_sort(arr, 5);
for (i = 0; i < 5; i++) {
printf("name: %s, score: %d\n", arr[i].name, arr[i].score);
}
return 0;
}
```
在该示例代码中,我们定义了一个结构体 `student`,其中有两个成员变量 `name` 和 `score`,分别表示学生姓名和分数。我们将结构体数组按照 `score` 成员变量从大到小进行冒泡排序,最终输出排序后的结果。
在 `bubble_sort` 函数中,我们使用两层循环实现冒泡排序,每次比较相邻的两个元素,如果前一个元素的 `score` 成员变量小于后一个元素的 `score` 成员变量,则交换两个元素的位置。
在 `main` 函数中,我们定义了一个包含 5 个元素的结构体数组,并调用 `bubble_sort` 函数对其进行排序。最后输出排序后的结果。
阅读全文