qsort 函数
- C语言编译器函数库自带的快速排序函数
- 头文件:<stdlib.h>
- 函数调用:(待排数组首地址,待排序元素个数,每个元素的大小,compar)
compar函数
int compar(const void * a, const void * b)
{
当返回值 < 0 时,a 排在 b之前;
当返回值 = 0 时,a b 位置不变;
当返回值 > 0 时,a 排在 b之后;
}
对Int类型排序
int compar(const void *a, const void *b)
{
return *(int *)a - *(int *)b;//升序排列
return *(int *)b - *(int *)a;//降序排列
}
对char类型排序
int compar(const void *a, const void *b)
{
return *(char *)a - *(char *)b;//升序排列
}
对字符串数组排序
int compar(const void* a, const void* b)
{
return strcmp(*(char *)a - *(char *)b);
}
对double类型排序
int compar(const void* a, const void* b)
{
return *(double *)a > *(double *)b ? 1 : -1;//建议%g输出哦,可以去掉无意义的egg!
}
详细代码展示
#include <stdio.h>
#include <stdlib.h>
int cmp(const void* a, const void* b)
{
return *(int *)a - *(int *)b;
)
int main(void)
{
int num[10];
int i;
for(i = 0; i < 10; i ++)
scanf("%d", &num[i]);//数组元素输入
qsort(num, 10, sizeof(num[0]), cmp);//qsort函数排序
for(i = 0; i < 10; i ++)
printf("%d ", num[i]);//数组元素输出
}
之后会将其它排序继续详解