查找和排序 :输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。
【代码】
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; struct student { string name; int score; }; bool cmp0(const student &a, const student &b) //高到低 { return a.score > b.score; } bool cmp1(const student &a, const student &b) //低到高 { return a.score < b.score; } int main() { int n, cmp; while(cin>>n>>cmp) { vector<student> stu(n); for(int i=0; i<n; i++) cin>> stu[i].name >> stu[i].score; if(cmp==0) stable_sort(stu.begin(), stu.end(), cmp0); else stable_sort(stu.begin(), stu.end(), cmp1); for(int i=0; i<n; i++) cout<< stu[i].name <<" "<<stu[i].score<<endl; } return 0; }
****************************************** 相关 *****************************************************
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; struct student { int number; int score; }; bool comp(const student &a, const student &b) { if(a.score != b.score) return a.score < b.score; else return a.number < b.number; } int main() { student stu; vector<student> v; int n; while(cin>>n) { for(int i=0; i<n; i++) { cin>>stu.number>>stu.score; v.push_back(stu); } sort(v.begin(), v.end(), comp); vector<student>::iterator it; for(it=v.begin(); it<v.end(); it++) { cout<<(*it).number<<" "<<(*it).score<<endl; } } return 0; }