qsort 快排函数(C语言)
函数原型
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) ;
头文件
#include<stdlib.h>
- base :要进行排序数组的地址。
- nitems :数组中元素的个数。
- size:数组每个元素的大小(以字节为单位)。
- compar:比较函数。参数是一个指针,指向比较函数。
返回值
无返回值。
比较函数
int cmp(const void* a, const void* b);//const void * :是一个万能的指针,可以强制转化成为任意类型的指针。
//我们在编写函数的时候应该将这两个参数强制转化为我们需要的类型
返回值
返回值为 int 类型。
如果为负数则*a 在 *b之前。
如果返回值为正则*a 在 *b 之后
如果为0,不定。
样例
#include<stdio.h>
#include<string.h>
int cmp(const void* a, const void* b)//const void* a是指所指向的值*a不可以改变,而a就是一个指针变量。
{
int* m = (int*)a; //将指针a强制转化为int 指针类型。
int* n = (int*)b;
return *m - *n; //对指向的值的大小进行比较
}
int main()
{
int t[10] = { 8 ,9,1,4,7,6,3,2,1,7 };
qsort(t, 10, sizeof(int), cmp);
for (int i = 0;i < 10;i++)
printf("%d ", t[i]);
}
输出结果
1 1 2 3 4 6 7 7 8 9