C语言库函数(快速排序)--qsort()
本文最后更新于:2 个月前
qsort()函数是一种用于对数组快速排序的函数,他是一个通用的排序函数,支持对不同类型的元素进行排序
头文件
qsort()是包含在C语言标准库<stdlib.h>中的函数,所以想使用该函数应在程序前引用该头文件
#include <stdlib.h>
函数声明
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
base -> 数组名
nitems ->元素个数
size -> 数组元素所占字节(int,char等所占字节)
(*compar)(const void , const void) -> 排序原则(递增,递减等)
排序原则?
通过定义一个函数compar,通过这个函数返回的参数来去确定排序规则
注意:compar函数中参数需要以const void *a,const void *b**的形式来定义,表示a,b的类型是“未确定”(void),在return时候进行强制类型转换为int型,*(int*)a-*(int*)b**表示递增顺序,如果递减只需要更换a和b的位置
1
2
3int compar(const void *a,const void *b) {
return *(int*)a-*(int*)b;//递增
}
不同类型元素排序
对于不同的类型,只需要改变compar函数就可以
整形(int)
1 |
|
浮点型(double)
注意!浮点数存在精度损失[1]的问题,运算可能会出错,所以我们选择比较的方式
1 |
|
字符型(char)
1 |
|
实例
升序排序一个10位数数组
1 |
|
输出结果
1 2 3 4 5 6 7 8 9 10
- 浮点数并不精确,5.000实际上可能是5.000000000003 ↩
C语言库函数(快速排序)--qsort()
https://blog.seasalt-haiyan.top/2023/11/20/C语言库函数-快速排序-qsort/