1104.数据排序
C++中的sort函数的头文件是#include<algorithm>;
sort函数的三个参数
第一个:开始的地址
第二个:结束的地址
第三个:排序函数,第三个参数可以不写,此时默认升序排列
#include<iostream>
#include<algorithm>
using namespacestd;
struct S //自己定义了一个结构体 S
{
int a;
}a[100];
bool cmp(S x, S y) //要定义成bool
{
return x.a > y.b;
struct S
{
int a;
int b;
}a[5];
bool cmp(S x, S y)
{
if(x.a !=y.a) return x.a < y.a; // !=比< > 简便
else return x.b > y.b; //先根据a升序排列,若相等按照b降序排列;
}
int main()
{
for(int i=0;i<5;i++)
{
scanf("%d%d",&a[i].a,&a[i].b);
}
sort (a,a+5,cmp);
for(int j=0;j<5;j++)
{
cout<<a[j].a<<' '<<a[j].b;
}
return 0;
}
该题即需用二级排序
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
struct s
{
int shuju;
int xuhao;
int num;
}a[100005];
bool comp(s a,s b)
{
if ( a.shuju<b.shuju )return 1;
else if(a.shuju>b.shuju)return 0;
else{
if(a.num<b.num)return 1;
else return 0;
}
}
int main()
{
int i=0;
while(scanf("%d %d",&a[i].xuhao,&a[i].shuju)!=EOF)
{
a[i].num=i;
i++;
}
sort(a,a+i,comp);
for(int j=0;j<i;j++)
{
printf("%d %d\n",a[j].xuhao,a[j].shuju);
}
return 0;
}