头文件
#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++的标准库里提供了一堆基于模板的比较函数对象,有兴趣可以去了解一下,此处省略。