(C)qsort 用法

qsort函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度是n*log(n),其结构为:
void qsort( void *buffer, size_t count, size_t size, int (*compare)(const void*, const void *) );

参数:

*buffer  为要排序的数组
count  为要排序的数组的长度
size   为数组的大小
compare 为判断大小函数的指针,这个需要自己写(很关键!)

用法:

1.对int类型数组排序
int number[100];

int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b; //强制类型转换
}

qsort(number,
100,sizeof(int),cmp);
2.对char类型数组排序
char str[100];

int cmp(const void *a,const void *b)
{
return *(char *)a-*(char *)b; //同int类型
}

qsort(str,
100,sizeof(char),cmp);
3.对double类型数组排序
double number[100];

int cmp(const void *a,const void *b)
{
return *(double *)a>*(double *)b?1:-1;
}

qsort(number,
100,sizeof(double),cmp);
4.对结构体一级排序
struct node
{
double data;
int other;
}s[
100];

//按照data的值从小到大将s排序
int cmp(const void *a,const void *b)
{
return (*(node *)a).data>(*(node *)b).data?1:-1;
}

qsort(s,
100,sizeof(node),cmp);
5.对结构体二级排序
struct node
{
int x,y;
}s[
100];

int cmp(const void *a,const void *b)//按照x从小到达排序,当x相等,y按照从大到小排
{
struct node *c=(node *)a;
struct node *d=(node *)b;
if(c->x!=d->x)
return c->x - d->x; //从小到达排序
else
return d->y - c->y; //从大到小排
}

qsort(s,
100,sizeof(node),cmp);
6.对字符串排序
struct STR_NODE
{
int data;
char str[100];
}s[
100];

//按照结构体中字符串str的字典顺序排序
int cmp(const void *a,const void *b)
{
return strcmp((*(STR_NODE *)a)->str,(*(STR_NODE *)b)->str);
}

qsort(s,
100,sizeof(STR_NODE),cmp);
转自网络

转载于:https://www.cnblogs.com/chaehom/archive/2011/02/24/1963781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值