sort函数简单的介绍
目录
首先sort函数的头文件是#include<algorithm>
sort函数我认为可以分成三段,结构是sort(开始位置,结束位置,自定义函数),排序范围是左闭右开,使用的是地址。最后一个自定义函数可以不用写,默认是从小到大。
例如:
#include<algorithm>
#include<algorithm>
using namespace std;
int main(){
int a[10]={0,5,6,9,8,4,3,1,2,7};
sort(a,a+10);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
上面的代码是简单的使用sort,先是定义一个数组,然后使用sort, 因为数组一共有10个数字,所以开始位置是a,结束位置是a+10,然后我并没有写排序的顺序,所以就是默认的从小到大。
结果为
关于自定义函数
我们可以选着写成一个函数,也可由用lambda函数(也就是将代码内嵌)。
自定义函数要注意返回值应当是一个布尔型的。
我写这篇文章的主要原因是在做力扣时看到lambda函数不会,所以特此写下这篇文章用来帮助记忆。
例如
#include <iostream>
#include<algorithm>
using namespace std;
bool cmd(int i,int j){
return i>j;
}
int main(){
int a[10]={0,5,6,9,8,4,3,1,2,7};
sort(a,a+10,cmd);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
首先与之前一样,首先定义一个新的数组,然后sort排序,从a到a+10,但是后面加了一个函数名,所以排序顺序是我规定的方式,i>j,相当于就是前一个大于后一个,所以是从大到小的排列顺序。
结果为
#include <iostream>
#include<algorithm>
using namespace std;
int main(){
int a[10]={0,5,6,9,8,4,3,1,2,7};
sort(a,a+10,[](int i,int j){return i>j;});
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
首先定义一个数组,然后就是范围是a到a+10,然后就是lambda函数,其实写法与正常函数写法一致,但是没有命名,[]内也可以加入一些东西,比如你可以在外面的主函数内声明一个数,例如b,然后可以分为[b]和[&b],前者只可以引用,无法修改,后者可以修改b的值,并且外面的b也会被一同修改。
结果为
将奇数和偶数分开
#include <iostream>
#include<algorithm>
using namespace std;
int main(){
int a[10]={0,1,2,3,4,5,6,7,8,9};
sort(a,a+10,[](int i,int j){
if(i%2==0&&j%2==1)//假如前面是偶数,后面是奇数就把偶数放前面
return true;
return false;
});
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}