原题链接:[编程入门]三个数字的排序
解题思路:
不使用常规排序算法,不适用三目运算符。
使用 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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复