C语言学习--快速排序函数sqort()

目录

1.qsort函数是什么

2.qsort函数的时间复杂度

3.qsort函数具体讲解

4.qsort 具体案例讲解


1.qsort函数是什么

qsort函数是C语言编译器函数库自带的快速排序函数。

其包含在#include<stdlib.h>头文件里面,所以在使用的时候需要加上该头文件。

// "quick sort"基于快速排序的函数

2.qsort函数的时间复杂度

因为其本身还是快速排序,所以时间复杂度仍然是O(nlogn)

(在做题的时候,感觉它还是比传统的快排要更快,传统的快排最后三个会TLE,但是使用qsort函数就不会)

3.qsort函数具体讲解

sqort函数对数组进行排序
 

 void qsort(void *base, size_t nitems, size_t size, int (*compare)(const void *, const void*))

参数说明:

/*
base – 指向要排序的数组的第一个元素的指针。
nitems – 由 base 指向的数组中元素的个数。
size – 数组中每个元素的大小,以字节为单位。
compare – 用来比较两个元素的函数。
*/

compare函数:

int compare(const void *a,const void *b)
{
	return *(int*)a-*(int*)b;
}
(int *)a表示将a地址强制类型转换成整形地址类型
*(int*)a 就是得到目标地址的值

//compare函数需要自己定义声明,用来比较a和b的大小。

该函数是一个比较函数,接受两个指针类型的参数 ab,这两个参数分别指向待比较的整数。函数内部通过将指针转换为整型指针,然后取值进行比较,返回它们的差值作为比较结果。

  • 如果返回值小于 0,表示 a 应该排在 b 的前面。
  • 如果返回值等于 0,表示 a 和 b 相等,顺序不变。
  • 如果返回值大于 0,表示 a 应该排在 b 的后面。

4.qsort 具体案例讲解

//1.对整数排序
#include<stdio.h>
#include<stdlib.h>
#define MAXN 100010
int n,a[MAXN];

//升序排序
int compare1(const void *a,const void *b)
{
	return *(int*)a-*(int*)b;
}

//降序排序
int compare2(const void *a,const void *b)
{
	return *(int*)b-*(int*)a;
}
int main()
{
    printf("请输入所要排列数组的长度:\n.");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	qsort(a,n,sizeof(int),compare1);
	//
	for(int i=0;i<n;i++)
		printf("%d ",a[i]);

	return 0;
}

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西柚小萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值