【C语言】qsort 函数声明|降序排列

举报
謓泽 发表于 2023/09/30 16:29:14 2023/09/30
【摘要】 【C语言】qsort 函数声明 

🔥 qsort 函数声明 

void qsort(void *base,//1 
           size_t nitems,//2 
           size_t size,//3
           int (*compar)(const void *, const void*))//4

(1):base 👉 指向要排序的数组的第一个元素的指针。

(2):nitems 👉 由 base 指向的数组中元素的个数。

(3):size 👉 数组中每个元素的大小,以字节为单位。

(4):compar 👉 用来比较待排序数据种两个元素的函数。如果,返回的是大于0的数字表示第一个元素大于第二个元素、等于0的话就是表示第一个元素等于第二个元素、小于0的话就是第一个元素小于第二个元素。

🔥 qsort代码示例

qsort引用头文件 #include <stdlib.h>

题目:将arr数组当中元素进行排序,用qsort函数实现!

示例,如下代码所示 👇

#include<stdio.h>
#include<stdlib.h>
void print(int arr[], int sz)
{
	int i;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}
int sort_max (const void* a1,const void* a2)
{
	//函数内部实现
	return *(int*)a1 - *(int*)a2;
}
int main(void)
{
	int arr[10] = { 10,9,8,7,6,5,4,3,2,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr,sz);//排序之前
	qsort(arr, sz, sizeof(arr[0]), sort_max);
	print(arr, sz);//排序之后

	return 0;
}

编译运行结果👉 1 2 3 4 5 6 7 8 9 10 

当然如果你想实现降序排列也是很容易的,只需要把用来比较待排序数据种两个元素的函数交换一下位置即可。例如:上面的 a1 和 a2只需要交换下位置就可以了,这样就可以实现我们的一个降序排列。

🔥降序排列

注:qsort() 排序默认是升序排序(从低到高),那么我们想要降序排列(从高到低)应该怎么办呢。实际上这也是很好解决的。示例代码如下↓

int sort_max (const void* a1,const void* a2)
{
	//函数内部实现
	return *(int*)a2 - *(int*)a1;
}

只需要改变上述两个值(a1、a2)的位置交换下就可以了。

那么我们接下来来实践下,把arr数组当中的元素改成如下↓

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

其余代码和上述一样不变,注:sort_max()自定义函数当中要交换(a1和a2)的值。

运行结果🖊

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。