标准库函数qsort的使用
标准库函数qsort – 实现快速排序
void qsort (void* base, size_t num, size_t size, int (compar)(const void,const void*));
返回值类型为void
有四个参数:
- 指向数组首元素的指针
- 数组元素个数
- 数组元素类型的大小
- 需要自己实现的一个比较函数
代码示例:
#include <stdio.h>
#include <stdlib.h>
//由小到大排序
int compare_smallTolarge(const void* a, const void* b)
{
return (*(int*)a - *(int*)b); //先将a,b转换为(int*)型,再用*取值
}
//由大到小排序
int compare_largeTosmall(const void* a, const void* b)
{
return (*(int*)b - *(int*)a);
}
void main()
{
int values[] = { 40, 10, 100, 90, 20, 25 };
int n = sizeof(values) / sizeof(values[0]);
printf("原始数组:");
for (int i = 0; i < n; i++)
printf("%d ", values[i]);
printf("\n");
printf("由小到大:");
qsort(values, n, sizeof(int), compare_smallTolarge);
for (int i = 0; i < n; i++)
printf("%d ", values[i]);
printf("\n");
printf("由大到小:");
qsort(values, n, sizeof(int), compare_largeTosmall);
for (int i = 0; i < n; i++)
printf("%d ", values[i]);
}