/************************************************************************************************************************
** void qsort(void *base, int nelem, unsigned int width, int (*cmp)(const void *,const void *));
** 使用该函数,可以对任何类型的一维数组排序。该函数参数中,base 是待排序数组的起始地址,nelem 是待排序数组的元素个数,
** width 是待排序数组的每个元素的大小(以字节为单位),最后一个参数cmp是一个函数指针它指向一个“比较函数”。
** int cmp(const void* a, const void* b)
** 如果返回负数,说明a排在b前面
** 如果返回正数,说明a排在b后面
** 如果返回0,说明a和b无先后关系
**************************************************************************************************************************/
#include <stdlib.h>
#include <stdio.h>
int compare1( const void *arg1, const void *arg2 );
int compare2( const void *arg1, const void *arg2 );
int main( int argc, char **argv )
{
int a[5] = {2,1,3,5,4};
int i;
printf("原数组为:\n");
for (i = 0; i < 5; i++)
printf ("%d\t", a[i]);
printf("\n");
printf("从小到大排序为:\n");
qsort (a, 5, sizeof (int), compare1);
for (i = 0; i < 5; i++)
printf ("%d\t", a[i]);
printf( "\n" );
printf("从大到小排序为:\n");
qsort (a, 5, sizeof (int), compare2);
for (i = 0; i < 5; i++)
printf ("%d\t", a[i]);
printf( "\n" );
return 0;
}
int compare1( const void *arg1, const void *arg2 )//从小到大排序
{
return *( int*)arg1 - *( int*)arg2;
}
int compare2( const void *arg1, const void *arg2 )//从大到小排序
{
return *( int*)arg1 < *( int*)arg2;
}
qsort函数
最新推荐文章于 2023-09-13 16:04:50 发布