C 库函数  ndash  qsort()  介绍

首先,咱们得知道 qsort() 是什么玩意,什么能用它。qsort()是C语言中非常重要的一个库函数,它可以按特定的排序方式对任意类型的数组进行排序,这个特定排序方式需要用户自行编写,然后作为参数传入该函数当中。在排序完成后,数组的元素就满足所指定的顺序了。

顺便插一句,就是 qsort() 函数是 quick sort(快排)的缩写,因为它是一种快速排序算法的实现。

那既然是排序,就肯定跟比较的结果有关啦 ~

函数原型:

```c

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void* ))

```

我们先来翻译一下这个原型:

参数:

* base -- 指向要排序的数组的第一个元素的指针。

* nitems -- 由 base 指向的数组中元素的个数。

* size -- 数组中每个元素的大小,以字节为单位。

* compar -- 用来比较两个元素的函数的指针。这个函数指针接受两个指向常量的 void * 类型的参数(也就是你需要先强制类型转换),并返回一个 int 类型的值,这个值表示两个元素的顺序。

这个函数指针通常是由用户自定义的比较函数,而我们可以使用此函数来写出相应的程序。

那么怎么用呢?

我们可以先定义一个比较函数(一般情况下要定义一个单独的函数):

```c

int compare(const void *a, const void *b) {

int x, y;

x = *(int *)a; //强制类型转换

y = *(int *)b;

if (x < y)

return -1;

else if (x == y)

return 0;

else

return 1;

}

```

这个函数会将数组中的两个元素进行比较,返回一个int型的值,表示它们的大小关系。现在我们可以在我们的主函数中使用qsort()函数:

```c

#include

#include

#define SIZE 10

int compare(const void *a, const void *b) {

int x, y;

x = *(int *)a;

y = *(int *)b;

if (x < y)

return -1;

else if (x == y)

return 0;

else

return 1;

}

int main(void) {

int array[SIZE] = { 5, 9, 2, 8, 4, 1, 10, 3, 7, 6 };

int i;

qsort(array, SIZE, sizeof(int), compare); //使用qsort()函数进行排序

for(i = 0; i < SIZE; i++) {

printf("%d ", array[i]);

}

printf("\n");

return 0;

}

```

我们来试试,看看能不能成功排序,我预测答案是:能!

输出结果:

```c

$ ./test

1 2 3 4 5 6 7 8 9 10

```

完美!

所以,当咱们需要对任何类型的数据进行排序时,qsort()函数是非常好的选择。只需编写相应的比较函数,将其指针传递给qsort()函数,就可以轻松地将数组排序了。 www.0574web.net 宁波海美seo网络优化公司 是网页设计制作,网站优化,企业关键词排名,网络营销知识和开发爱好者的一站式目的地,提供丰富的信息、资源和工具来帮助用户创建令人惊叹的实用网站。 该平台致力于提供实用、相关和最新的内容,这使其成为初学者和经验丰富的专业人士的宝贵资源。

点赞(93) 打赏

声明本文内容来自网络,若涉及侵权,请联系我们删除! 投稿需知:请以word形式发送至邮箱18067275213@163.com

评论列表 共有 1 条评论

杀鸡敬猴 1年前 回复TA

做好内容的人有福了!SEO本来就该如此! 我也认为这个是有道理的

立即
投稿
发表
评论
返回
顶部