#include<stdio.h>标签:int,void,float,qsort,C语言,sizeof,e2,e1,库函数 From: https://blog.51cto.com/u_15922371/5991936
#include<stdlib.h>
#include<string.h>
struct Stu
{
char name[20];
int age;
};
//void qsort(void* base,
// size_t num,
// size_t width,
// int(*cmp)(const void *e1,const void *e2)
// );
int cmp_int(const void *e1,const void *e2)
{
//比较两个整形值
return *(int*)e1-*(int*)e2;
//e1和e2是两个要比较的元素
}
int cmp_float(const void *e1,const void *e2)
{
/*if(*(float*)e1==*(float*)e2)
return 0;
else if(*(float*)e1>*(float*)e2)
return 1;
else
return -1;*/
return (int)(*(float*)e1-*(float*)e2);
}
int cmp_stu_by_name(const void *e1,const void *e2)
{
//比较名字就是比较字符串
//字符串比较不能直接用><=来比较,应该用strcmp函数
return strcmp(((struct Stu*)e1)->name,((struct Stu*)e2)->name);
}
void test1()
{
int arr[10]={9,8,7,6,5,4,3,2,1,0};
int sz=sizeof(arr)/sizeof(arr[0]);
int i=0;
qsort(arr,sz,sizeof(arr[0]),cmp_int);
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
}
void test2()
{
float f[]={9.0,8.0,7.0,6.0,5.0,4.0};
int sz=sizeof(f)/sizeof(f[0]);
int i=0;
qsort(f,sz,sizeof(f[0]),cmp_float);
for(i=0;i<sz;i++)
{
printf("%f ",f[i]);
}
}
void test3()
{
struct Stu s[3]={ {"zhangsan",20},{"lisi",30}{"wangwu",10}};
int sz=sizeof(s)/sizeof(s[0]);
qsort(s,sz,sizeof(s[0]),cmp_stu_by_name);
}
int main()
{
test2();
//struct Stu s[3]={ {"zhangsan",20},{"wangwu",10}};
//float f[]={9.0,8.0,7.0,6.0,5.0,4.0};
//arr排序的数组的起始位置,sz元素的地址,sizeof(arr[0]一个元素的大小单位是字节,cmp_int排序的方法)
}