- 它是库函数
- 它可以排任何类型的数据,如整形数据,字符串数据,结构体数据,而我们一般写的冒泡排序, 选择排序只能排一种数据,有一定的局限性
- qsort与冒泡排序相似,只是比较不同数据的方法不同,如字符串比较要用strcmp,不能直接用大于或等于比较,因为比较大小方法不同,需自己写个比较大小函数,再传给qsort才行
用qsort需引用头文件stdlib.h或search.h
qsort函数原型:void qsort( void* base, size_t num, size_t size, int (*compar)(const void *e1,const void *e2))qsort函数参数:
- void* base:base中存放待排序数据中第一个对象的地址,设为void*是因为它是一个无地址的指针,可以接收任何类型的指针,所以base可以放任何类型的地址【void*不能进行解引用操作且不能对其进行加减整数】
- size-t num:待排序数据的元素个数
- size-t size:待排序数据中一个元素的大小,单位:字节
- int (*compar)(const void *e1,const void *e2):是一个函数指针,通过传入比较大小的函数(需要自己写)用来比较待排序数据中所传入两个元素的大小,(若排为升序,compar函数返回值>0就交换【第一个数>第二个数】,若排为降序compar函数<0就交换【第一个数<第二个数】,只要==0,不用交换)
- 本质上qsort函数就像冒泡排序两个元素一点一点往下比的
- 如果排为升序是e1-e2,即第一个元素-第二个元素,排为降序则是e2-e1,即函数第二个元素-第一个元素,因



最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



