【C语言】qsort函数:库函数使用,冒泡模拟实现

文章介绍了如何使用C语言的qsort库函数进行排序,强调了传参和自定义比较函数compare的重要性。同时,还提供了一个冒泡排序的模拟实现,该实现可以通用并用于比较不同类型的数据。示例中提到了结构体成员的字符串比较情况。
摘要由CSDN通过智能技术生成

1.qsort库函数使用

  • qsort的使用主要注意传参,和自定义比较函数compare
int arr[] = { 9,3,6,8,1,4,9,10 };
int sz = sizeof(arr) / sizeof(int);
qsort(arr, sz, sizeof(int), compare);//传入参数
  • compare自定义比较函数,参数类型与库函数对应,为const void*

在这里插入图片描述

int compare(const void* p1, const void* p2)//参数类型与库函数对应
{
	return *(int*)p1 - *(int*)p2;
}

2.冒泡模拟实现“qsort”

  • 利用冒泡排序思想模拟实现qsort实际上为通用冒泡排序
  • 函数体基本上和冒泡排序一致
void bubble_sort(void* buf, size_t num, size_t size, 
				int (*compare)(const void*, const void*))
{
	for (int i = 0; i < num-1; i++)
	{
		for (int j = 0; j < num - 1 - i; j++)
		{
			char* buf1 = (char*)buf + j * size;
			if (compare((char*)buf1, (char*)buf1 + 1 * size) > 0)
			{
				Swap((char*)buf1, (char*)buf1 + 1 * size, size);
				
			}
		}
	}
}
  • 上述代码用到的自定义compare函数,根据比较排序的元素类型定义
  • 此处比较结构体中字符串成员name(字符串比较用strcmp
int cmp_by_name(const void* p1, const void* p2)
{
	return strcmp(((struct Stu*)p1)->name, ((struct Stu*)p2)->name);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值