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
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。