1、升序排序
//输入包括n个数字,n个数据占一行
5
3 5 2 1 4
sort(开始位置,结束位置,排列方式),第三个参数不填写默认为升序排序。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,a[10];
cin>>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]<<" ";
return 0;
}
//输出为 1 2 3 4 5
2、降序排序
//输入包括n个数字,n个数据占一行
5
3 5 2 1 4
sort(开始位置,结束位置,排列方式),当第三个参数为greater<int>()时,排序方式为降序。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,a[10];
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n,greater<int>());
for(int i=0;i<n;i++) cout<<a[i]<<" ";
return 0;
}
//输出为 5 4 3 2 1
3、自定义排序cmp
//输入包括n个数字,n个数据占一行
5
3 5 2 1 4
sort(开始位置,结束位置,排列方式),第三个参数可以为自定义函数来实现排序。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int n,a[10];
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n,c);
for(int i=0;i<n;i++) cout<<a[i]<<" ";
return 0;
}
//输出为5 4 3 2 1
4、结构体内部重载符号排序
//输入包括5个同学,每个同学数据占一行
小泽 80 90 70
小飞 70 60 50
小周 80 91 50
小凯 75 95 90
小肖 95 95 60
通过在结构体内重载“<”来规定排序方式。
例子的排序方式以语文先进行比较,再比数学..
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct Node{
int x,y,z;
string name; //½á¹¹ÌåÄÚÓÐÈý¸ö²ÎÊý zΪÃû×Ö xΪÓïÎijɼ¨ yΪÊýѧ³É¼¨ zΪӢÓï³É¼¨
bool operator < (const Node &t)const{ //ÖØÔØ<
if(x!=t.x) return x>t.x;
if(y!=t.y) return y>t.y;
return z>t.z;
}
};
Node a[5];
int main(){
for(int i=0;i<5;i++)
cin>>a[i].name>>a[i].x>>a[i].y>>a[i].z;
sort(a,a+5);
cout<<"ͬѧ"<<"\t"<<"ÓïÎÄ"<<"\t"<<"Êýѧ"<<"\t"<<"Ó¢Óï"<<endl;
for(int i=0;i<5;i++)
cout<<a[i].name<<"\t"<<a[i].x<<"\t"<<a[i].y<<"\t"<<a[i].z<<endl;
return 0;
}
输出为: