c++ sort()与qsort()函数使用

今天在知道c++中有一个函数——sort(头文件是algorithm),可以实现排序功能,效率还比冒泡之类的排序算法高。类似快速排序。

sort()

sort(first,last) first表示第一个数据,last是最后一个数据,在这两个数据之间(包括它们)的数据进行排序。
默认的是从小到大排序(升序)。
如果要降序的话。
要自己定义一个函数cmp(compare单词的缩写)

bool cmp(int a,int b)
{
    return a>b;  //降序排序,改为return a<b ,就是升序
}

实例
对数组a[5]={1,5,2,6,3}降序排序

bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
sort(a,a+5,cmp);
return 0;
}

qsort()

qsort (void*, size_t, size_t,int ()(const void, const void*));
qsort ( 数组名 ,元素个数,元素占用的空间(sizeof),比较函数)
比较函数是一个自己写的函数 遵循 int com(const void *a,const void *b) 的格式。
当a b关系为 > < = 时,分别返回正值 负值 零 (或者相反)。
使用a b 时要强制转换类型,从void * 转换回应有的类型后,进行操作。
数组下标从零开始,个数为N, 下标0-(n-1)。

int cmp(const void *a,const void *b)
{
     return *(int*)b-*(int*)a;  //这是升序排列,如果要降序,把a,b位置对换
}

int main()
{
     int a[20]={2,4,1,23,5,76,0,43,24,65},i;
     for(i=0;i<20;i++)
        cout<<a[i]<<endl;
     qsort((void *)a,20,sizeof(int),cmp);
     for(i=0;i<20;i++)
        cout<<a[i]<<endl;
     return 0;

sort 与qsort 的cmp()函数写法对比

sort:

bool cmp(int a,int b)
{
    return a>b;  //记住!!!是 < or > 不是减号!!!
}

qsort:

int cmp(const void *a,const void *b)
{
     return *(int*)b-*(int*)a;  //是减号!!!a-b是升序 b-a是降序
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值