時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32M,其他語言64M 熱度指數:107624
本題知識點: 排序
校招時部分企業筆試將禁止編程題跳出頁面,爲提前適應,練習時請使用在線自測,而非本地IDE。
題目描述
查找和排序
題目:輸入任意(用戶,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績
都按先錄入排列在前的規則處理。
示例:
jack 70
peter 96
Tom 70
smith 67
從高到低 成績
peter 96
jack 70
Tom 70
smith 67
從低到高
smith 67
jack 70
Tom 70
peter 96
輸入描述:
輸入多行,先輸入要排序的人的個數,然後輸入排序方法0(降序)或者1(升序)再分別輸入他們的名字和成績,以一個空格隔開
輸出描述:
按照指定方式輸出名字和成績,名字和成績之間以一個空格隔開
示例1
輸入
3
0
fang 90
yang 50
ning 70
輸出
fang 90
ning 70
yang 50
1.用結構體數組存儲輸入的數據,結構體包含一個int(存放成績)和一個char數組(存放用戶,成績)
2.分理處成績。由於姓名和成績之間用空格分開,可以用空格作爲成績的開始標記
3.用stable_sort()爲結構體進行穩定排序
#include<iostream>
#include<algorithm>
#define maxn 100
using namespace std;
typedef struct mark{
char a[maxn];
int grade;
};
int cmpasc(const mark &a,const mark &b)
{
return a.grade>b.grade;
}
int cmpdsc(const mark &a,const mark &b)
{
return a.grade<b.grade;
}
int main()
{
int n,t;
while(cin>>n)
{
cin>>t;
getchar();
mark m[n],mid;
for(int i=0;i<n;i++)
cin>>m[i].a>>m[i].grade;
if(!t)
{
stable_sort(m,m+n,cmpasc);
}
else
{
stable_sort(m,m+n,cmpdsc);
}
for(int i=0;i<n;i++)
cout<<m[i].a<<' '<<m[i].grade<<endl;
}
return 0;
}