四宫弥纱


私信TA

用户名:KoizumiKanon

访问量:849

签 名:

等  级
排  名 6010
经  验 1390
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 电子科技大学成都学院
专  业

  自我简介:

解题思路:

不使用常规排序算法,不适用三目运算符。
使用 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 人评分

  评论区

太秀了 为什么不直接使用指针交换数据
2022-06-26 13:45:26
  • «
  • 1
  • »