怎么使用qsort,给我举例
时间: 2024-11-04 13:11:44 浏览: 20
`qsort()`是C标准库中的一个函数,用于对数组进行快速排序。它是一个通用的、原地排序算法,接受两个参数:要排序的数组的首地址以及数组元素个数。基本的用法是:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设有一个结构体Person,包含姓名(name)和年龄(age)
typedef struct {
char name[50];
int age;
} Person;
int compare(const void *a, const void *b) {
return (*(const Person *)a).age - (*(const Person *)b).age; // 按照年龄进行升序排序
}
void qsort(Person array[], int n) {
qsort(array, n, sizeof(Person), compare); // 调用qsort并传入比较函数
}
int main() {
Person people[] = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 20}};
int num_people = sizeof(people) / sizeof(people[0]);
// 使用qsort对people数组按年龄排序
qsort(people, num_people, sizeof(Person), &compare);
// 输出排序后的结果
for (int i = 0; i < num_people; i++) {
printf("%s (%d)\n", people[i].name, people[i].age);
}
return 0;
}
```
在这个例子中,我们首先定义了一个结构体`Person`,然后定义了一个`compare`函数作为`qsort`的第三个参数,告诉它如何比较元素。在`main`函数中,我们创建了一个`Person`类型的数组,并调用`qsort`进行排序。
阅读全文