C语言qsort快速排序

C语言快速排序函数qsort(),mark一下

https://blog.csdn.net/z944733142/article/details/80292613

	#include<stdlib.h>
	
	void qsort(void*, size_t, size_t, int ( * )(const void * ,  const void *  ))

四个参数简单理解:
1.void* :待排序的数组,可以用名字或指针的形式
2.size_t:数组的长度
3.size_t:每个元素的字节长度,可以用sizeof(a[0])来计算数组a每个元素的字节长度
4.int()(const void, const void*):所需要排序的规则,即一个带有返回值的函数

各种数据类型的升序排序函数
(如果要降序排序,只需将return里的a,b反过来写即可。)

1. 整型

	int inc (const void * a,const void *b)
	 {
	return *(int *)a - *(int *)b;
	}

2. double型

	int inc (const void * a, const void * b)
	{
	return *(double *)a > *(double *)b ? 1 : -1;
	}

注: 这里两个浮点数相减但要返回一个整型数,如果按上面做法直接减会丢失小数点部分。所以需另加处理,直接判断大小,如果a大于b,则返回1,否则返回-1。

3. 字符排序

	int inc(const void *a,const void *b)
	{
	   return *(char *)a - *(char *)b;
	}

4.字符串排序

	char am = { {"...."}, {"....."}, .....};
	qsort(a, m, sizeof(char * )  * n, inc);
  1. 根据字符串首字母排序
	int inc(const void *a, const void *b)  
	{  
		return * (char *)a - *(char * )b;  
	}  
  1. 根据字符串长度排序
	int inc(const void *a, const void *b)  
	{  
		return strlen((char * )a) > strlen((char * )b) ? 1 : -1;  
	} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值