C++ sort()函数 您所在的位置:网站首页 csort函数 C++ sort()函数

C++ sort()函数

2023-04-07 23:52| 来源: 网络整理| 查看: 265

sort()函数

  sort()函数是定义在C++ STL 标准库中的一个模板函数 ,它的作业是对容器或普通数组中指定范围内的元素进行排序,排序规则默认以元素值的大小做升序排序,除此之外我们也可以选择标准库提供的其它排序规则(比如std::greater降序排序规则)。最重要的是我们可以使用函数的形式自定义排序规则,调用时只需要把我们自定义的排序函数作为参数传入即可。  要使用sort(),我们需要包含头文件。

#include

  sort()本身的实现是基于快速排序,但并不是单纯的快速排序。比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的太深,他会选择推排序。具体实现源码看着头疼,就不管了,总之性能还是很好的。

  需要注意的是,sort()函数要求参数容器的迭代器类型为RandomAccessIterator,即随机访问迭代器。这就意味着sort()函数目前只对数组 (array)、向量(vector)、双队列生效(deque)

  另外,若容器内含有多个相同值的元素,使用sort()排序时,可能会导致它们相对位置发生改变。

  sort()函数有三个参数:

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

  参数1:迭代器的起始位置,对于数组来说就是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。

  参数2:迭代器的结束位置,即首地址加上数组的长度n(代表尾地址的下一地址)。

  参数3:排序规则。默认可以不填,如果不填sort会默认按数组升序排序。也就是1,2,3,4。comp 可以是 C++ STL 标准库提供的排序规则(比如 std::greater),也可以是STL关联式容器自定义排序规则,还可以直接定义一个具有 2 个参数并返回 bool 类型值的函数作为排序规则。

  对于自定义函数的方法,当函数返回true的时候,关系表达式的左数将会排在数组靠前的位置。例如:

int A[100]; bool cmp1(int a,int b){ //降序排列 //return a>b; //默认的升序排列 return a>ath[i].country; } //调用sort()函数简化排序过程 sort(ath,ath+n,cmp); //输出,注意序号中0的个数,使用右对齐补0的方式 for(int i = 0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有