qsort 快排函数(C语言)

qsort 快排函数(C语言)

函数原型

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

头文件

#include<stdlib.h>
  • base :要进行排序数组的地址。
  • nitems :数组中元素的个数。
  • size:数组每个元素的大小(以字节为单位)。
  • compar:比较函数。参数是一个指针,指向比较函数。

返回值

无返回值。

比较函数

int cmp(const void* a, const void* b);//const void * :是一个万能的指针,可以强制转化成为任意类型的指针。
									//我们在编写函数的时候应该将这两个参数强制转化为我们需要的类型

返回值

返回值为 int 类型。

如果为负数则*a 在 *b之前。

如果返回值为正则*a 在 *b 之后

如果为0,不定。

样例

#include<stdio.h>
#include<string.h>

int cmp(const void* a, const void* b)//const void* a是指所指向的值*a不可以改变,而a就是一个指针变量。
{
	int* m = (int*)a;		//将指针a强制转化为int 指针类型。
	int* n = (int*)b;
	return *m - *n;			//对指向的值的大小进行比较
}
int main()
{
	int t[10] = { 8 ,9,1,4,7,6,3,2,1,7 };
	qsort(t, 10, sizeof(int), cmp);
	for (int i = 0;i < 10;i++)
		printf("%d ", t[i]);
}

输出结果

1 1 2 3 4 6 7 7 8 9
posted @   布拉多1024  阅读(117)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示