一:qsort函数了解
推荐网址:cplusplus.com
void qsort(void* base,//你要排序的数据的起始位置
size_t num,//待排序的数据元素的个数
size_t width,//待排序的数据元素的大小(单位是字节)
int (* cmp)(const void* e1, const void* e2)//函数指针-比较函数
);
_cdecl - 函数调用约定
比较2个整形
e1指向一个数字
e2指向另一个数字
要求
return Value(返回数字大小) Description
<0 e1 less than e2(小于)
=0 e1 equivalent e2(等于)
>0 e1 greater than e2(大于)
默认qsort是从小到大排序
二:qsort函数实现
#include<stdio.h>
#includd<stdlib.h>
int cmp_int(const void* e1, const void* e2)
{
return (*(int*)e1 - *(int*)e2);//因为e1和e2的类型全为void*强制类型转换为int*便可以计算
}
int main()
{
int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
qsort(arr, sz, sizeof(arr[0]), cmp_int);
int i = 0;
for ( i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}//答案0 1 2 3 4 5 6 7 8 9
return 0;
}