本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值。
分享给大家供大家参考。C语言中的qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序。
函数声明
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
-
base-- 指向要排序的数组的第一个元素的指针。
-
nitems-- 由 base 指向的数组中元素的个数。
-
size-- 数组中每个元素的大小,以字节为单位。
-
compar-- 用来比较两个元素的函数,即函数指针(回调函数)
回调函数:
回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就说这是回调函数。 [2]
compar参数
compar参数指向一个比较两个元素的函数。比较函数的原型应该像下面这样。注意两个形参必须是const void *型,同时在调用compar 函数(compar实质为函数指针,这里称它所指向的函数也为compar)时,传入的实参也必须转换成const void *型。在compar函数内部会将const void *型转换成实际类型。
int compar(const void *p1, const void *p2);
如果compar返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的左面;
如果compar返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定;
如果compar返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的右面
一、对int类型数组排序
1 2 3 4 5 6 7 |
|
二、对char类型数组排序(同int类型)
1 2 3 4 5 6 7 |
|
三、对double类型数组排序(特别要注意)
1 2 3 4 5 6 7 |
|
四、对结构体一级排序
1 2 3 4 5 6 7 8 9 10 11 |
|
五、对结构体二级排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
六、对字符串进行排序
1 2 3 4 5 6 7 8 9 10 11 12 |
|
相信本文所述实例对大家C程序设计的学习有一定的借鉴价值。