原题链接:[编程入门]三个数字的排序
解题思路:
不使用常规排序算法,不适用三目运算符。
使用 qsort 函数进行排序,解法属于“炫技型”,想要看懂题解,对指针的理解有一定的要求,主要目的是减少代码冗余,拓展适用面。
我们的 sort 函数(常规排序算法)只能接收一个整型的数组,但是我们有一个库函数可以接收任意数组,那样的话我们的算法通用性就更广了。这库函数包含在 stdlib.h 中,它的名字是 qsort,qsort 代表 Quick sort ,你应该向这个函数传入一个数组,一个任意的数组,可以是整型的或者是字符型的,甚至复杂的数据类型,一个结构体。
注意事项:
qsort 函数是 stdlib.h 的库函数
参考代码:
#include <stdio.h> #include<stdlib.h> #pragma warning(disable:4996) int compare(const void* a, const void* b) { int A = *((int*)a); int B = *((int*)b); return A - B; // 想要改变排序规则,一般只需要更改此函数的内容即可 } int main() { int A[3] = { 0 }; for (int i = 0; i < 3; i++) { scanf("%d", &A[i]); } // 四个参数,数组,数组长度,数组元素大小,排序规则 qsort(A, 3, sizeof(int), compare); for (int i = 0; i < 3; i++) { printf("%d ", A[i]); } return 0; }
0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复