网站做二级目录跟二级域名的区别,阿里巴巴网站建设要多少钱,360搜索首页网址是多少,开发游戏软件赚钱吗1.引入 我们前面学习了一些常见的排序方法#xff0c;比如冒泡排序等#xff0c;但它仅局限于整型的排序#xff0c;今天我们要介绍一个牛气哄哄的库函数qsort函数#xff0c;这个函数可就厉害了#xff0c;能排序任意类型数据#xff0c;掌握后可谓受益终身#xff0c;…1.引入 我们前面学习了一些常见的排序方法比如冒泡排序等但它仅局限于整型的排序今天我们要介绍一个牛气哄哄的库函数qsort函数这个函数可就厉害了能排序任意类型数据掌握后可谓受益终身接下来让我们一起来学习这个牛牛的库函数吧。
2.应用 qsort函数一共设计四个参数第一个参数是数组的地址因为它要比较不同数据类型所以它要有一个比较的入口第二个参数是数组中元素的个数第三个参数是数组的元素大小第四个参数是最难的一个参数他是一个函数指针因为我们在这里需要提供一个函数一个可以提供比较方法的函数。接下来闲言少叙书归正传让我们来研究它的使用范例 我们在这里要利用qsort函数来帮助我们比较数组中整型的大小并排序
#include stdio.h
//qosrt函数的使⽤者得实现⼀个⽐较函数
int int_cmp(const void * p1, const void * p2)
{return (*( int *)p1 - *(int *) p2);
}
int main()
{int arr[] { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };int i 0;qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof (int), int_cmp);for (i 0; i sizeof(arr) / sizeof(arr[0]); i){printf( %d , arr[i]);}printf(\n);return 0; } 看见了吧有了qsort函数的帮助代码实现了大大的简化。有兴趣的也可以来研究一下下面当数组中的元素为一个结构体时我们又该如何使用qsort函数呢
struct Stu //学⽣ {char name[20];//名字int age;//年龄
};
//假设按照年龄来⽐较
int cmp_stu_by_age(const void* e1, const void* e2)
{return ((struct Stu*)e1)-age - ((struct Stu*)e2)-age;
}
//strcmp - 是库函数是专⻔⽤来⽐较两个字符串的⼤⼩的
//假设按照名字来⽐较
int cmp_stu_by_name(const void* e1, const void* e2)
{return strcmp(((struct Stu*)e1)-name, ((struct Stu*)e2)-name);
}
//按照年龄来排序
void test2()
{struct Stu s[] { {zhangsan, 20}, {lisi, 30}, {wangwu, 15} };int sz sizeof(s) / sizeof(s[0]);qsort(s, sz, sizeof(s[0]), cmp_stu_by_age);
}
//按照名字来排序
void test3()
{struct Stu s[] { {zhangsan, 20}, {lisi, 30}, {wangwu, 15} };int sz sizeof(s) / sizeof(s[0]);qsort(s, sz, sizeof(s[0]), cmp_stu_by_name);
}
int main()
{test2();test3();return 0; } 当然后面我们可以一起来研究qsort函数究竟是怎么实现的那就看各位对我的支持了啦mua