c语言库函数编写快速排序

来源:互联网 发布:平安公司大数据体检 编辑:程序博客网 时间:2024/05/13 02:23


库函数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;
}