C函数qsort的用法
qsort()函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分发写的,其时间复杂度为n*log(n)。为了了解
排序方式
排序方式有很多种,比如:选择排序、冒泡排序、归并排序、快速排序等等。顾名思义快速排序是目前公认的一种比较好的排序算法,其比选择排序、冒泡排序都要快。因为它的速度很快,所以系统也在库里实现这个算法,便于我们使用,这个函数就是qsort了。
qsort简介
qsort的函数原型是:1void qsort(void* base, size_t nelem, size_t width, cmp)
其中:
- *base为要排序的数组
- nelem为要排序的数组的长度
- width为每个数组元素的大小(以字节为单位)
- cmp为自己定义的比较函数,其作用在于方便使用者实现对数组、字符串、结构体等结构进行升序或降序排列。
cmp函数
|
|
cmp函数中有两个元素作为参数,返回一个int值,如果比较函数返回大于0,qsort就认为a>b;如果返回等于0,qsort就认为a=b;如果返回小于0,qsort就认为a小于b。
因此,qsort函数知道元素大小,就可以把大的放到前面去。
如果你把cmp函数的返回值1与-1的位置调换,那么就造成了升降序的差别了。
实例操作
为了加深理解,下面以数组、字符串、结构体为例说明情况
对int数组进行排序
|
|
对char类型数组排序
|
|
对double类型数组排序
|
|
对结构体类型排序
|
|
对结构体二级排序
|
|
对字符串进行排序
|
|