qsort函数

/************************************************************************************************************************
**	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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值