头文件(Required Header)
<stdlib.h> and <search.h>
qsort传参
void qsort(void* base,
//base中存放的是待排序数据中第一个元素的地址
size_t num,
//排序数据的元素个数
size_t size,
//一个元素的大小,单位是字节
int (*compar)(const void*,const void*)
//用来比较待排序数据中的2个元素的函数
)
compar单独拿出来编写函数
compar函数决定函数降序还是升序
int compar(const void*e1,const void*e2)
{
return *(int*)e1-*(int*)e2;
}
代码解析
#include<stdio.h>
#include<stdlib.h>
int compar(const void* e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
int main()
{
int arr[10] = { 0,2,3,5,6,1,4,7,9,8 };
qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(arr[0]), compar);
//arr 是数组首地址
//sizeof(arr) / sizeof(arr[0])计算素组元素个数
//sizeof(arr[0]) 计算数组中一个元素的大小,单位字节
//compar比较函数,自己定于内部
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d ",arr[i]);
}
return 0;
}
//打印的结果
//0 1 2 3 4 5 6 7 8 9
打印结果升序
其中compar 中 返回的是 e 1 − e 2 \color{pink}{e1-e2} e1−e2
打印结果降序
其中compar 中 返回的是 e 2 − e 1 \color{pink}{e2-e1} e2−e1
学的不是技术,更是梦想!!!