目录
声明
头文件:#include<algorithm>
用法:sort(数组名,数组名+数组的元素个数,排序函数)
这里的排序函数可写可不写,默认的是按从小到大的顺序排列,如果要按从大到小的顺序排列,需自定义排序函数
注意:此函数可以排列任何类型的数据,包括char[]和string[]!
按从小到大的顺序排列
其实也就只有这么一行:
sort(a,a+n);
代码示例:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++)cout<<a[i]<<" ";
cout<<endl;
}
运行结果:
按从大到小的顺序排列
此时,便需要定义一个排序函数:
bool cmp(int a,int b){//从大到小排列
return a>b;//中间的>表明了排序结果是从大到小,如果是<,表明排序结果为从小到大
}
然后进行运用此排序函数进行排序:
sort(a,a+n,cmp);
程序如下:
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){//从大到小排列
return a>b;//中间的>表明了排序结果是从大到小,如果是<,表明排序结果为从小到大
}
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n,cmp);
for(int i=0;i<n;i++)cout<<a[i]<<" ";
cout<<endl;
}
运行结果:
char[]和string[]的排序举例
只需要把上面数组的类型改为char或string即可,排序会将数组元素的ASCII码按要求进行排列
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(string a,string b){//从大到小排列
return a>b;
}
int main(){
int n;
cin>>n;
char a[n];
string b[n];
cout<<"char:";
for(int i=0;i<n;i++)cin>>a[i];
cout<<"string:";
for(int i=0;i<n;i++)cin>>b[i];
sort(a,a+n);//按从小到大排列
sort(b,b+n,cmp);//从大到小排列
cout<<"char:";
for(int i=0;i<n;i++)cout<<a[i]<<" ";
cout<<endl<<"string:";
for(int i=0;i<n;i++)cout<<b[i]<<" ";
cout<<endl;
}
运行结果:
如有疑问欢迎私信或评论区留言!