如何在C语言中使用结构体实现选择排序降序排序
时间: 2025-06-14 08:16:10 浏览: 12
在C语言中,可以使用结构体和数组结合选择排序算法来实现一个简单的结构体数组降序排列。假设我们有一个名为`Person`的结构体,它包含姓名`name`和年龄`age`两个字段,下面是如何使用选择排序算法来对这样的结构体数组按年龄降序排序:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体 Person
typedef struct {
char name[50];
int age;
} Person;
// 用于比较年龄降序的函数
int compare_age(const void *a, const void *b) {
return ((const Person *)b)->age - ((const Person *)a)->age; // 返回负数表示 a 的年龄小于 b
}
// 选择排序降序部分
void selection_sort_descending(Person arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int max_idx = i;
for (int j = i + 1; j < n; j++) { // 找到未排序部分的最大值索引
if (compare_age(&arr[j], &arr[max_idx]) > 0) {
max_idx = j;
}
}
// 将找到的最大值移到已排序部分的末尾
Person temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
// 测试排序
void print_array(Person arr[], int n) {
for (int i = 0; i < n; i++) {
printf("Name: %s, Age: %d\n", arr[i].name, arr[i].age);
}
}
int main() {
Person people[] = {
{"Tom", 30},
{"Jerry", 25},
{"Alice", 35},
{"Bob", 28}
};
int num_people = sizeof(people) / sizeof(people[0]);
selection_sort_descending(people, num_people);
printf("Sorted array in descending order of age:\n");
print_array(people, num_people);
return 0;
}
```
在这个例子中,我们首先定义了`compare_age`函数作为`qsort`标准库函数的辅助函数,用于比较结构体的年龄。然后在`selection_sort_descending`函数中实现了选择排序算法,并通过`print_array`函数展示了排序后的结果。
阅读全文
相关推荐


















