STL排序算法sort()相关用法

C++STL中的排序函数sort()相关用法: 

Sort(); //使用此函数必须先包含头文件#include <algorithm>

     //此函数的排序类似于快排;时间复杂度为n*log2(n);

    //此函数适用于排列数组中的元素或者其他容器中的元素,例如vector;

Sort()函数的用法:

1sort(begin, end)此时函数需要传入两个参数,此时传入的第一个参数为排序范围内第一个元素的地址(或迭代器),第二个参数为排序范围内最后一个元素的地址(或迭代器);

此种方法排序默认为从小到大进行排序;

I.e.(迭代器)

    vector<int> v;

v.push_back(3);

v.push_back(4);

v.push_back(1);

v.push_back(2);

v.push_back(7);

vector<int>::iterator iter;

for (iter = v.begin(); iter != v.end(); iter++)

cout << *iter << " ";

cout << endl;

iter = v.begin() + 3;

sort(iter, v.end());//此为排列第四个元素到最后一个元素的顺序,从小到大;

for (iter = v.begin(); iter != v.end(); iter++)

cout << *iter << " ";

I.e.(数组)

    int a[10];

for (int i = 0; i < 10; i++)

cin >> a[i];

sort(a, a + 10);//注意此时的地址应该是首地址加上数组的长度,不应该是加长度-1;

for (int i = 0; i < 10; i++)

cout << a[i] << " ";

cout << endl; 

2    Sort(begin, end, compare);

要实现从大到小排序必须在函数参数中加上第三个参数,告诉程序从大到小进行排序;

此时要在函数中声明加入排序函数bool compare(int a, int b) {return (a > b)}

在调用sort()函数时要在第三个参数中加上compare;

即sort(begin, end, compare);//注意begin和end与上面的一样,第三个参数compare不需要对此函数传入参数(规则);更不能写成compare();这样编译器会报错;

I.e. int a[10];

Compare(int a, int b) {return a > b}

for (int i = 0; i < 10; i++)

cin >> a[i];

sort(a, a + 10, compare);//实现从大到小;

for (int i = 0; i < 10; i++)

cout << a[i] << " ";

cout << endl; 

 

3一种更加简单的实现从大到小排序的方法:

第三个参数不用传入函数,只要把第三个参数写成以下形式,即可告诉编译器你需要的排序方式;

Less<type_name>() //从小到大,注意后面的括号;

Greater<type_name>()//从大到小;

  I.e.  

  int a[10];

for (int i = 0; i < 10; i++)

cin >> a[i];

sort(a, a + 10, less<int>());

for (int i = 0; i < 10; i++)

cout << a[i] << " ";

cout << endl; 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值