成绩排序

来源:互联网 发布:华为系统源码是什么 编辑:程序博客网 时间:2024/04/30 03:22

题目描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
      都按先录入排列在前的规则处理。

   例示:
   jack      70
   peter     96
   Tom       70
   smith     67

   从高到低  成绩            
   peter     96    
   jack      70    
   Tom       70    
   smith     67    

   从低到高

   smith     67  

   Tom       70    
   jack      70    
   peter     96      


输入描述:

输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开;0代表降序输出,1代表升序输出



输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开


输入例子:
30fang 90yang 50ning 70

输出例子:
fang 90ning 70yang 50
#include<iostream>  #include<string>  #include<algorithm>#include<vector>using namespace std;bool cmp(const pair<string,int> &a,const pair<string,int> &b)//升序排列{return a.second < b.second;}int main(){int n,flag;while (cin >> n){cin >> flag;string ch; int value;vector<pair<string, int>> v;for (int i = 0; i < n; i++){cin >> ch >> value;v.push_back(make_pair(ch,value));//按序输入}sort(v.begin(),v.end(),cmp);//升序if (flag){   //升序输出for (int i = 0; i < v.size(); i++)cout << v[i].first << ' ' << v[i].second << endl;}else{ //降序输出reverse(v.begin(), v.end());for (int i = 0; i < v.size(); i++)cout << v[i].first << ' ' << v[i].second << endl;}}return 0;}


0 0
原创粉丝点击