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);
- 根据字符串首字母排序
int inc(const void *a, const void *b)
{
return * (char *)a - *(char * )b;
}
- 根据字符串长度排序
int inc(const void *a, const void *b)
{
return strlen((char * )a) > strlen((char * )b) ? 1 : -1;
}