C++ std::sort

本文来自: std::sort

函数默认模板:

template <class RandomAccessIterator>  void sort (RandomAccessIterator first, RandomAccessIterator last);

可选模板:

template <class RandomAccessIterator, class Compare>  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

在一定范围内为元素排序:
将范围[first,last) 中的元素以升序排列,元素的比较优先使用操作符<, 其次使用函数comp。等价元素并不保证保持其原始相对顺序。

参数:
(1) first, last
随机访问迭代器,用于指向要排序序列的起始和结束位置。使用的范围是[first,last),包含从first到last之间的所有元素,包括first指向的元素,但不包括last指向的元素。
RandomAccessIterator应当指向一个具有正确定义的swap操作的类型,并且该类型既可通过移动构造又可通过移动赋值。
(2)comp:
接受两个在指定严格弱排序范围内的元素作为参数的二元函数,并返回一个可转换为布尔值的值。返回的值表示第一个参数传递的元素是否在该函数定义的特定严格弱排序中位于第二个参数之前。

案例:

// sort algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::sort
#include <vector>       // std::vector

bool myfunction (int i,int j) { return (i<j); }

struct myclass {
  bool operator() (int i,int j) { return (i<j);}
} myobject;

int main () {
  int myints[] = {32,71,12,45,26,80,53,33};
  std::vector<int> myvector (myints, myints+8);               // 32 71 12 45 26 80 53 33

  // using default comparison (operator <):
  std::sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33

  // using function as comp
  std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)

  // using object as comp
  std::sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)

  // print out content:
  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

输出结果:

myvector contains: 12 26 32 33 45 53 71 80

时间复杂度: N*log2(N)

我自己理解是,如果不加上自定义的函数comp,这个函数默认就是升序排列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c中的std::sort是一个标准库函数,用于对数组或容器中的元素进行排序。它可以按照默认的小于运算符(operator<)进行排序,也可以使用自定义的比较函数对象或lambda表达式进行排序。 以下是使用std::sort函数对数组进行升序排序的示例代码: #include <iostream> #include <algorithm> int main() { int arr[] = {5, 2, 8, 1, 9}; std::sort(arr, arr + 5); for (int i = 0; i < 5; i++) { std::cout << arr[i] << " "; } return 0; } 在这个示例中,std::sort函数接受两个迭代器参数,分别指向要排序的范围的起始和末尾。数组arr的起始地址由arr传递给std::sort函数,而arr + 5则是数组的末尾地址(这里假设数组的大小是5)。std::sort函数将数组中的元素按照升序进行排序,并输出结果。 std::sort函数的语法如下: template<class RandomIt, class Compare> void sort(RandomIt first, RandomIt last, Compare comp); 其中,RandomIt是一个迭代器类型,用于指向排序范围的起始和末尾。Compare是一个比较函数对象或lambda表达式,用于指定排序的顺序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[C++]std::sort()函数使用总结](https://blog.csdn.net/weixin_30906185/article/details/98305002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【C++sort函数](https://blog.csdn.net/XiugongHao/article/details/130977213)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值