qsort自定义排序规则
时间: 2024-12-03 15:15:47 浏览: 10
`qsort`函数是C标准库中的一个快速排序算法,通常用于对数组进行原地排序。如果你想自定义排序规则,你需要提供一个比较函数作为`qsort`的第一个参数。这个比较函数应该接受两个指向数组元素的指针,并返回一个整数来指示它们的相对顺序。
函数原型通常是这样的:
```c
int compare(const void *a, const void *b);
```
其中:
- `a` 和 `b` 分别指向待比较的数组元素。
- 返回值:
- 如果`a` 应该排在 `b` 前面,返回一个负整数(如 `-1`);
- 如果两者相等,返回 `0`;
- 如果`a` 应该排在 `b` 后面,返回一个正整数(如 `1`)。
例如,如果你要按照字符串长度进行降序排序,可以这样做:
```c
void sort_strings_by_length(char strings[], int size) {
qsort(strings, size, sizeof(char*), compare_lengths_descending);
}
int compare_lengths_descending(const void *a, const void *b) {
const char* strA = *(const char**)a;
const char* strB = *(const char**)b;
return strcmp(strB, strA); // 如果strB更长,strcmp会返回正值
}
```
在这里,`compare_lengths_descending` 函数将根据字符串长度进行比较,并且因为 `strcmp` 是为了比较降序,所以实际上需要取反结果。
阅读全文