stable_sort()为静态排序函数#include
题解:此题按照结构体的排序方法,自定义排序方法,先按学号排序,可使得按语文成绩排序时若语文成绩相同,学号仍然按照从小到大的顺序排列,按总成绩排序若相同时,也会继续按照之前的顺序。
结构体排序方法如下:
struct stu{
int num; //学号
int Chi; //语文成绩
int math;
int Eng;
int sum; //成绩总和
};
//comp1为sort函数的排序规则,作为sort函数的第三个参数
//"<"为升序排列,">"为降序排列
bool comp1(stu s1,stu s2) //按总分降序
{
return s1.sum>s2.sum;
}
stable_sort()为静态排序函数
(图片来源网络,侵删)
#include<bits/stdc++.h>
using namespace std;
//定义结构体表示学生的信息
struct stu{
int num; //学号
int Chi; //语文成绩
int math;
int Eng;
int sum; //成绩总和
};
bool comp1(stu s1,stu s2) //按总分降序
{
return s1.sum>s2.sum;
}
bool comp2(stu s1,stu s2) //按语文成绩降序
{
return s1.Chi>s2.Chi;
}
bool comp3(stu s1,stu s2) //按学号升序
{
return s1.num<s2.num;
}
int main()
{
int n;
cin>>n;
stu a[n];
for(int i=0;i<n;i++)
{
a[i].num = i+1;
cin>>a[i].Chi>>a[i].Eng>>a[i].math;
a[i].sum = a[i].Chi+a[i].Eng+a[i].math;
}
//稳定排序,先按学号排序,再按语文成绩排序,最后按总成绩排名
stable_sort(a,a+n,comp3);
stable_sort(a,a+n,comp2);
stable_sort(a,a+n,comp1);
for(int i=0;i<5;i++)
{
cout<<a[i].num<<' '<<a[i].sum<<endl;
}
return 0;
}
(图片来源网络,侵删)
#includeusing namespace std;
struct sadbee
{
int yu;
int shu;
int ying;
int z;
int x;
}a[10001];
int main()
{
int n,i,j;
cin>>n;
for(i=1;i>a[i].yu>>a[i].shu>>a[i].ying;
a[i].z=a[i].yu+a[i].shu+a[i].ying;
a[i].x=i;
}
for(i=1;ia[j].x)
{
swap(a[i],a[j]);
}
}
}
for(i=1;i标签: int函数
文章来源:
arkfactor
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。