A3-5:sort排序

sort函数排序方法cmp的含义:

#include <bits/stdc++.h>
using namespace std;
int a[]={4,2,5,2,1,5,6};
bool cmp(int a,int b){
	if(a<b)return true;//如果条件成立,返回true表示按条件顺序排列,ab不交换 
	return false;//返回false意思是,ab交换; 
	//以上if语句等价于以下代码:
	//return a<b; //a b 按照从小到大排序 
}
int main()
{
	int n=7;
	sort(a,a+n,cmp);
	for(int i=0;i<n;i++)cout<<a[i]<<" ";
	return 0;
}
//B5092O奖学金(Noip2007)
#include <bits/stdc++.h>
using namespace std;
int n;
struct stu{
	int id,yu,shu,ying,sum;
}a[1005];
bool cmp(stu x,stu y){
	if(x.sum!=y.sum) return x.sum>y.sum;
	if(x.yu!=y.yu)return x.yu>y.yu;
	return x.id<y.id;
}
/*
bool cmp(stu x,stu y){
	if(x.sum>y.sum) return true;
	if(x.sum<y.sum) return false;
	if(x.yu!=y.yu)return x.yu>y.yu;
	return x.id<y.id;
}*/
int main() {
	//stu a[1005];
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].yu>>a[i].shu>>a[i].ying;
		a[i].id=i; 
		a[i].sum=a[i].yu+a[i].shu+a[i].ying;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=5;i++){
		cout<<a[i].id<<" "<<a[i].sum<<endl;
	}
	return 0;
}
//D2194整数奇偶排序
#include <bits/stdc++.h>
using namespace std;
int a[10005];
bool cmp(int x,int y){
	int xx=x%2,yy=y%2;
	if(xx!=yy)return xx>yy;
	if(xx==1) return x>y;
	if(xx==0) return x<y;
}
int main() {
	while(cin>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7]>>a[8]>>a[9]>>a[10]){
		sort(a+1,a+11,cmp);
		for(int i=1;i<=10;i++)cout<<a[i]<<" ";cout<<endl;
	}
	return 0;
}