#include <stdio.h>
#include <stdlib.h>
int cmp_int(const void* e1, const void* e2)
{ //进行比较
return (int)e1 - (int)e2;
}
int cmp_f(const void* e1, const void* e2)
{
if((float)e1 > (float)e2) { return 1; }
else if((float)e1 == (float)e2) { return 0; }
else { return -1; }
}
void test1()
{ int i = 0;
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
int sz_i = sizeof(arr) / sizeof(arr[0]);
qsort(arr, sz_i, sizeof(arr[0]), cmp_int);
for(i = 0; i < sz_i; i++)
{
printf("%2d",arr[i]);
}
}
void test2()
{
int i = 0;
float f[] = {9.0, 8.0, 7.0, 6.7, 5.4, 4.2, 3.9, 2.3, 1.1};
int sz_f = sizeof(f) / sizeof(f[0]);
qsort(f, sz_f, sizeof(f[0]), cmp_f);
for(i = 0; i < sz_f; i++)
{
printf("%.2f ",f[i]);
}
}
int main()
{ test1();
printf("\n");
test2();
return 0;
}
qsort进行使用时需要按照下述格式进行使用
qsort( void *base, size_t num, size_t width, int(*cmp)(const voide1,const void*e2)
void base是需要进行排序的内容
size_t num是该需排序内容的长度(个数)
size_t width 是该需排序内容的宽度(字节数)
int(*cmp)(const void*e1,const void*e2)是进行比较的函数
若比较的内容前者大于后者返回值为1
若相等则返回0
若前者小于后者则返回-1