在有些题目中,我们经常需要将一些数从小到大或从大到小排序,这时可以用 sort 来搞定。
而从小到大十分简单,核心如下:
sort(a+1,a+1+n);
但从大到小需要用结构体外加一个 cmp 函数,再 sort 一下。
从小到大代码(2种):
第一种,正序输出:
代码:
#include <bits/stdc++.h>
using namespace std;
int a[105];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
cout<<a[i]<<' ';
}
cout<<endl;
return 0;
}
第二种,自定结构体加 cmp 函数。
代码:
#include <bits/stdc++.h>
using namespace std;
struct stu{
int t;
}a[105];
bool cmp(stu a,stu b){
return a.t<b.t;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].t;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].t<<' ';
}
cout<<endl;
return 0;
}
从大到小代码(2种):
第一种,逆序输出:
代码:
#include <bits/stdc++.h>
using namespace std;
int a[105];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=n;i>=1;i--){
cout<<a[i]<<' ';
}
cout<<endl;
return 0;
}
第二种,自定结构体加 cmp 函数。
代码:
#include <bits/stdc++.h>
using namespace std;
struct stu{
int t;
}a[105];
bool cmp(stu a,stu b){
return a.t>b.t;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].t;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].t<<' ';
}
cout<<endl;
return 0;
}
这下,应该没人不明白结构体和排序了吧。