1、使用sort函数头文件需要#include< algorithm >
2、sort模板含三个参数:
sort (begin,end,cmp)
- 参数begin:要排序数组的起始
地址
(第一个数据的地址) - 参数end:最后一个数据的
下一个
数据的地址
- 参数cmp:若这个参数不写,
默认为升序
3、cmp参数不写,默认升序
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[]={6,5,2,1,3};
sort(a,a+5);
for(int i=0;i<5;i++)
cout<<a[i]<<" "; //运行结果1 2 3 5 6
}
或者cmp函数里写return a<b,也是升序
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
int a[]={6,5,2,1,3};
sort(a,a+5,cmp);
for(int i=0;i<5;i++)
cout<<a[i]<<" "; //运行结果1 2 3 5 6
}
4、cmp函数里写return a>b,实现降序
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int a[]={6,5,2,1,3};
sort(a,a+5,cmp);
for(int i=0;i<5;i++)
cout<<a[i]<<" "; //运行结果 6 5 3 2 1
}
5、其实排序完全可以不用自己写cmp函数就可以实现排序
- 升序:sort(begin,end,less());
- 降序:sort(begin,end,greater());
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[]={6,5,2,1,3};
sort(a,a+5,greater<int>());//降序
for(int i=0;i<5;i++)
cout<<a[i]<<" "; //运行结果 6 5 3 2 1
sort(a,a+5,less<int>());//升序
for(int i=0;i<5;i++)
cout<<a[i]<<" "; //运行结果1 2 3 5 6
}
6、sort也可以完成字符的排序
利用迭代器
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string a="hello world";
sort(a.begin(),a.end());
cout<<a; //运行结果 空格dehllloorw
return 0;
}
7、sort完成字符串的排序
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string a[5];
for(int i=0;i<5;i++)
cin>>a[i];
sort(a,a+5);
cout<<endl;
for(int i=0;i<5;i++)
cout<<a[i]<<endl;
return 0;
}
8、sort函数对结构体进行排序
#include<iostream>
#include<algorithm>
using namespace std;
struct hhh
{
int x;
int y;
};
bool cmp(hhh a,hhh b)
{
if(a.x==b.x)
return a.y>b.y;
return a.x>b.x;
}
int main()
{
hhh a[4]={{2,1},{3,3},{6,3},{3,2}};
sort(a,a+4,cmp);
for(int i=0;i<4;i++)
cout<<a[i].x<<" "<<a[i].y<<endl;
return 0;
}