本文共 2042 字,大约阅读时间需要 6 分钟。
qsort 是 C 编程语言中一个重要的标准库函数,用于对数组进行排序。它的函数原型为:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *));
该函数用于对 base 所指的数组进行排序。qsort 函数定义在标准库文件 <stdlib.h> 中。
回调函数是通过函数指针调用的一种方式。当将函数指针传递给其他函数时,调用目标函数即为回调函数。qsort 函数使用的比较函数的原型为:
int compar(const void *p1, const void *p2);
比较函数返回值的含义如下:
以下是一些常见的 qsort 应用场景及其代码示例:
#include#include int comp(const void *a, const void *b) { return *(int *)a - *(int *)b;}int main() { int n; scanf("%d", &n); int *array = malloc(n * sizeof(int)); for (int i = 0; i < n; i++) { scanf("%d", &array[i]); } qsort(array, n, sizeof(int), comp); for (int i = 0; i < n; i++) { printf("%d ", array[i]); } free(array); return 0;}
// 假设有一个二维数组 a[1000][2]int comp(const void *a, const void *b) { return ((int *)a)[0] - ((int *)b)[0];}qsort(a, 1000, sizeof(int) * 2, comp);
char a[MAX][MAX];// 假设 initial(a) 是初始化函数,lenth 是数组长度qsort(a, lenth, sizeof(a[0]), Comp);
struct Node { double data; int other;};int comp(const void *p1, const void *p2) { return ((Node *)p2)->data > ((Node *)p1)->data ? 1 : -1;}qsort(s, 100, sizeof(s[0]), comp);
struct Node { int x; int y;};int comp(const void *p1, const void *p2) { struct Node *c = (Node *)p1; struct Node *d = (Node *)p2; if (c->x != d->x) { return c->x - d->x; } else { return d->y - c->y; }}qsort(s, 100, sizeof(s[0]), comp);
struct Node { int data; char str[100];};int comp(const void *p1, const void *p2) { return strcmp(((Node *)p1)->str, ((Node *)p2)->str);}qsort(s, 100, sizeof(s[0]), comp);
这些示例展示了 qsort 在不同场景下的应用,既可以对简单数据进行排序,也可以对复杂数据结构进行高级排序。通过提供一个定制的比较函数,开发者可以根据具体需求对数据进行定制化排序。
转载地址:http://oxuk.baihongyu.com/