快排(qsort)用法

qsort 函数包含在 stdlib.h 中

所以C就这点来看还是不错滴^_^,当然貌似c++里的sort更简单。。。

 

使用方法:void qsort(void *base , num , width , cmp);

参数含义如下:

base:需要排序的目标数组的开始地址。

num:需要排序的数据的个数。

width:数组中每个元素的长度。

cmp:这个还得自己写。。微麻烦。。

 

1、对int类型数据排序。

int num[100];

int cmp(const void *a,const void *b)

{

    //参数列表中是两个空指针,需要去指向你的数组元素。所以转型成为当前数据的类型,然后取值。

    return *(int *)a - *(int *)b;    //升序

或:

    return *(int *)b - *(int *)a;    //降序

}

qsort(num,100,sizeof(num[0]),cmp);

 

2、对char类型数组排序。

char word[100];

int cmp(const void *a, const void *b)

{

    return *(char *)a - *(char *)b;    //升序

或:

    return *(char *)b - *(char *)a;    //降序

}

qsort(word,100,sizeof(word[0]),cmp);

对char型数据的排序与int型基本相同。

 

3、对double类型数据排序。

double num[100];

int cmp(const void *a, const void *b)

{

    return *(double *)a > *(double *)b ? 1:-1;    //升序

    //注意返回值的问题。显然cmp返回的是一个整型,所以为了避免double返回小数而导致错误,所以进行一下判断。

或:

    return *(double *)b > *(double *)a ? 1:-1;    //降序

}

qsort(num,100,sizeof(num[0]),cmp);

 

4、对字符串按字典序排序。

char words[100][100];

int cmp

{

    return strcmp((char *)a , (char *)b);    //升序,其中使用strcmp需要包含<string.h>文件

或:

    return strcmp((char *)b , (char *)a);    //降序

}

qsort(words,100,sizeof(words[0]),cmp);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值