算法小白学习日记-番外篇:sort函数使用技巧

在日常学习中要经常用到sort函数,每次用都要重新查一遍,因此在这里整理下,方便日后自己的查阅,也与大家一起分享。


1、头文件

c++中的sort函数包含在头文件algorithm中,具体引用方式如下:

#include <algorithm>
using namespace std;

2、普通数组排序

对于普通的数组,需要传入两个位置,且是左闭右开的,默认排序为从小到大。若arr中有10个元素,则排序方法如下:

sort(arr, arr + 10);//区间左闭右开,默认从小到大排序
sort(arr, arr + 10, greater<int>());//使sort从大到小排序

3、vector数组排序

与普通数组类似:

sort(arr.begin(), arr.end());//从小到大
sort(arr.begin(), arr.end(), greater<int>());//从大到小

4、复合数据类型

对于复合的数据类型,需要自定义比较规则:

struct Data{
    int x, y;//定义数据类型
}

bool cmp(const Data &a, const Data &b){//定义排序规则
    if(a.x != b.x) return a.x < b.x;//按照x从小到大排
    return a.y > b.y;//如果x相同,则y从大到小排
}

sort(arr.begin(), arr.end(), cmp);

5、对下标排序

为了不改变原来的arr数组,可以对arr的下标数组进行排序:

int ind[10];
for(int i = 0; i < 10; i++) ind[i] = i;//生成下标数组

sort(ind, ind + 10, [&](int i, int j) -> bool{//利用lambda表达式进行排序
    return arr[i] < arr[j];
});

算法小白学习日记-6:七种排序算法

最后,关于各种排序算法具体的实现原理及其复杂度,可以参考上方连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值