qsort 自定义排序
时间: 2024-10-28 13:04:10 浏览: 18
`qsort`是一个标准库函数,在C语言中用于对数组进行快速排序(Quick Sort)。它通常应用于通用的、未指定类型的元素排序,特别是当您需要提供自定义比较函数来定义特定的排序规则时。
在C语言中,要使用`qsort`进行自定义排序,您需要提供两个参数:
1. 待排序数组的首地址 (`void *array`)。
2. 数组元素的大小(每项字节数,`size_t size_type`),告诉函数每个元素占多少空间。
3. 需排序元素的数量 (`size_t num_items`)。
4. 比较函数的指针 (`int (*compare)(const void *, const void *)`),这是一个函数,接收两个指向数组元素的指针,并返回一个整数表示它们的相对顺序,通常是负数、零或正数。
例如,如果要按照字符串长度降序排序字符数组,您可以创建一个这样的比较函数:
```c
int compare_strings(const void *a, const void *b) {
const char *str1 = *(const char **)a;
const char *str2 = *(const char **)b;
return strlen(str2) - strlen(str1);
}
```
然后调用`qsort`:
```c
char *strings[] = {"apple", "banana", "cherry", "date"};
size_t string_count = sizeof(strings) / sizeof(char *);
qsort(strings, string_count, sizeof(char*), compare_strings);
```
阅读全文