库函数qsort()的原型如下:
#include <stdlib.h>
void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );
功能:对buf指向的数据(包含num项,每项的大小为size)进行快速排序。如果函数compare的第一个参数小于第二个参数,返回负值;如果等于返回零值;如果大于返回正值。函数对buf指向的数据按升序排序。
可以自己编写compare函数,而默认的函数compare返回为正值,所以函数对buf指向的数据按升序排序。
在这里的比较函数compare可以随便起自己喜欢的名字 int compare(const void *,const void *);返回类型必须是int
#include <stdio.h>
#include <stdlib.h>
//快速排序算法利用c库函数
int compUp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int compDown(const void *a, const void *b)
{
return *(int *)b - *(int *)a;
}
int main()
{
int a[5] = {5,4,3,2,1};
int b[5] = {1,2,3,4,5};
int len = 5;
int i;
printf("递增排序结果:\n");
qsort(a, len, sizeof(a[0]), compUp);
for(i = 0; i < len; i ++)
printf("%d ", a[i]);
printf("\n\n");
printf("递减排序结果:\n");
qsort(b, len, sizeof(b[0]), compDown);
for(i = 0; i < len; i ++)
printf("%d ", b[i]);
printf("\n");
return 0;
}