sort()函数——C++标准库函数

目录

一、函数介绍

二、函数用法


一、函数介绍

sort()函数包含在头文件#include<algorithm>,它可以实现对数据的排序,是一种类似于快排的排序函数,其效率高于常见的冒泡排序和选择排序。一般我们只需要知道该函数如何使用,关于它如何实现排序我们不做过多了解,如你想进一步学习,可以搜索相关资料。

二、函数用法

参数3个或2个

sort(first,last,cmp);

  • first:排序起始位置
  • last:排序结束位置
  • cmp:排序函数(可以是从大到小也可以是从小到大)

注意:参数cmp可以没有,即参数个数为2,此时函数默认的排序方法是从小到大排序

返回值:true/false(bool类型)

cmp(排序函数)

从小到大:

bool cmp(int a, int b)
{
    return a < b;
}

(或者忽略第三个参数!)

示例:

#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
    return a < b;
}
int main()
{
    int a[4] = { 3,4,1,2 };
    sort(a,a+4,cmp);
    int i;
    for (i = 0; i < 4; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    return 0;
}

从大到小:

bool cmp(int a, int b)
{
    return a > b;
}

示例:

#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
    return a > b;
}
int main()
{
    int a[4] = { 3,4,1,2 };
    sort(a,a+4,cmp);
    int i;
    for (i = 0; i < 4; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    return 0;
}

 那么,有没有不写cmp函数也可以让它实现从大到小排序的方法呢?

答案是有,我们利用c++强大的库中的 less<数据类型>()和greater<数据类型>()实现。

less<数据类型>()实现从小到大排序:

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int a[4] = { 3,4,1,2 };
    sort(a,a+4,less<int>());
    int i;
    for (i = 0; i < 4; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    return 0;
}

 greater<数据类型>()实现从大到小排序:

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int a[4] = { 3,4,1,2 };
    sort(a,a+4,greater<int>());
    int i;
    for (i = 0; i < 4; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    return 0;
}

 sort()函数同样也可以对字符串进行排序:

#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
    string s;
    cin >> s;
    sort(s.begin(), s.end()); //从小到大
    cout << s;
    return 0;
}
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
    string s;
    cin >> s;
    sort(s.begin(), s.end(),less<char>()); //从小到大
    cout << s;
    return 0;
}
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
    string s;
    cin >> s;
    sort(s.begin(), s.end(),greater<char>()); //从大到小
    cout << s;
    return 0;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.cgo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值