//不要用sort sort排序不稳定,不保持原来的顺序,注意冒泡排序循环变量控制,只扫描n-1次,每次扫描后一个当前最大或最小值位置确定,所以每扫一次减少比较次数
#include<bits/stdc++.h>
using namespace std;
struct Node
{
string name;
int score;
} p[10000],t;
int main()
{
int n;
while(cin>>n)
{
int x;
cin>>x;
for(int i=0; i<n; i++)
cin>>p[i].name>>p[i].score;
for(int i=0; i<n-1; i++)
for(int j=0; j<n-1-i; j++)
//改为for(int j=0; j<n-1; j++)也可以,但是增加没必要的比较次数
{
if(x==0)
{
if(p[j].score<p[j+1].score)
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
else
{
if(p[j].score>p[j+1].score)
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
for(int i=0; i<n; i++)
cout<<p[i].name<<" "<<p[i].score<<endl;
}
return 0;
}
成绩排序
最新推荐文章于 2020-08-14 20:18:35 发布