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

2019年4月27日 0 条评论 6 次阅读 0 人点赞

头文件

#include <algorithm>

三个参数

sort(buf, buf+n, cmp);
  • buf:待排序数组的首地址,待排序数组元素共n个。
  • buf+n:此处是重点,这个参数不是待排序数组的最后一个元素的地址,而是最后一个元素的后地址。简单来讲,可以理解为 [buf, buf+n) ,即这里两个参数表示的意义是左闭右开
  • cmp:排序方法,这个参数可以省略,省略后默认从小到大排序。也可以自己写一个比较函数来实现,具体见下面的例子。

例子

  • 省略参数,默认从小到大排序
int a[6]={2,9,8,4,6,7};

sort(a,a+6);

//排序后:2,4,6,7,8,9
  • 使用比较函数
//升序排序
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);

小结

  • sort() 是C++里一种类似快速排序的排序方法,复杂度能到O(nlogn) 。使用起来比qsort更简单,所以强推这个函数。
  • 注意第二个参数不是最后一个元素的地址,否则最后一个元素将不参与排序。
  • 比较函数其实可以不用自己写,C++的标准库里提供了一堆基于模板的比较函数对象,有兴趣可以去了解一下,此处省略。
头像

didi

这个人太懒什么东西都没留下

文章评论(0)