c语言如何将一个自定义排序函数应用到数组上并更新该数组的元素顺序?
时间: 2024-10-29 10:20:13 浏览: 18
C语言将数组中元素的数排序输出的相关问题解决
在C语言中,如果你想使用自定义排序函数对数组进行排序,通常会涉及到标准库函数`qsort()`。这个函数需要一个已经初始化的数组、数组的首地址、数组的大小以及一个指向比较函数的指针。下面是一个基本的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义排序函数,这里假设我们有一个结构体Person,包含姓名(name)和年龄(age)
typedef struct Person {
char name[50];
int age;
} Person;
// 比较函数,根据age进行升序排序
int compare(const void *a, const void *b) {
const Person *personA = (const Person *) a;
const Person *personB = (const Person *) b;
return personA->age - personB->age;
}
void custom_sort(Person arr[], int n) {
qsort(arr, n, sizeof(Person), compare);
}
int main() {
Person people[] = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 20}};
int size = sizeof(people) / sizeof(people[0]);
// 使用custom_sort函数对数组按年龄排序
custom_sort(people, size);
for (int i = 0; i < size; ++i) {
printf("%s (%d)\n", people[i].name, people[i].age);
}
return 0;
}
```
在这个例子中,`compare`函数定义了排序规则,然后在`main`函数中通过`custom_sort`调用`qsort`函数完成排序。
阅读全文