| 描述 | |
|---|---|
| 知识点 | 排序 |
| 运行时间限制 | 10M |
| 内存限制 | 128 |
| 输入 |
输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开 用户名字,字符串,非空串,长度不超过20; 成绩,整数,范围【0,100】 输入排序方式,0或1,0表示成绩从高到低方式输出名字和成绩,1表示成绩从低到高方式输出名字和成绩
|
| 输出 |
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开 |
| 样例输入 | 3 0 fang 90 yang 50 ning 70 |
| 样例输出 | fang 90 ning 70 yang 50 |
#include<iostream>
#include<string>
using namespace std;
void score_sort(string**,int,int);
int main()
{
int n,flag;//flag表示排序标志 0由高到低,1由低到高
cin>>n>>flag;
string **s=new string*[n];
for(int i=0;i<n;i++)
s[i]=new string[2];
for(int i=0;i<n;i++)
cin>>s[i][0]>>s[i][1];
score_sort(s,flag,n);
//system("pause");
return 0;
}
void score_sort(string** s,int flag,int n)
{
if(flag)
{
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(atoi(s[i][1].c_str())>atoi(s[j][1].c_str()))
{
string tmp[2];
tmp[0]=s[i][0];tmp[1]=s[i][1];
s[i][0]=s[j][0];s[i][1]=s[j][1];
s[j][0]=tmp[0];s[j][1]=tmp[1];
}
}
else
{
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(atoi(s[i][1].c_str())<atoi(s[j][1].c_str()))
{
string tmp[2];
tmp[0]=s[i][0];tmp[1]=s[i][1];
s[i][0]=s[j][0];s[i][1]=s[j][1];
s[j][0]=tmp[0];s[j][1]=tmp[1];
}
}
for(int i=0;i<n;i++)
cout<<s[i][0]<<" "<<s[i][1]<<endl;
}
11万+

被折叠的 条评论
为什么被折叠?



