C++:sort()函数的使用心得

头文件

#include <algorithm>

三个参数

sort(buf, buf+n, cmp);

1)buf:待排序数组的首地址,待排序数组元素共n个。

2)buf+n:此处是重点,这个参数不是待排序数组的最后一个元素的地址,而是最后一个元素的后地址。简单来讲,可以理解为 [buf, buf+n) ,即这里两个参数表示的意义是左闭右开。

3)cmp:排序方法,这个参数可以省略,省略后默认从小到大排序。也可以自己写一个比较函数来实现,具体见下面的例子。

例子

1)省略参数,默认从小到大排序

int a[6]={2,9,8,4,6,7};
sort(a,a+6);

排序后:2,4,6,7,8,9

2)使用比较函数

bool cmp_up(int a,int b)//升序排序
{
    return a<b;
}

bool cmp_down(int a,int b)//降序排序
{
    return a>b;
}

//调用方法
sort(a,a+6,cmp_up);
sort(a,a+6,cmp_down);

小结

1)sort() 是C++里一种类似快速排序的排序方法,复杂度能到O(nlogn) 。使用起来比qsort更简单,所以强推这个函数。

2)注意第二个参数不是最后一个元素的地址,否则最后一个元素将不参与排序。

3)比较函数其实可以不用自己写,C++的标准库里提供了一堆基于模板的比较函数对象,有兴趣可以去了解一下,此处省略。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值