結構體數組排序:1004 成績排名 【pta】

結構體模板html

1 struct STU
2 {
3     string name;    //用string能夠代替char
4     string num;
5     int s;
6 };

sort是用快速排序實現的,屬於不穩定排序,stable_sort是用歸併排序實現的,所以是穩定的。今後之後,爲了保險起見我打算使用stable_sort。c++

無論是sort仍是stable_sort默認都是升序,有些狀況要求降序等更加複雜的狀況,利用默認的升序就會變得比較麻煩(其實都是同樣的)數組

所以爲了方便,能夠自定義一個bool類型的cmp函數函數

1 bool cmp(int a,int b)
2 {
3       return a>b;
4 }

以上是普通的cmp(非數組cmp)測試

面對結構體數組降序排序,能夠像如下同樣:flex

bool cmp(STU a,STU b)
{
    return a.s>b.s;
}

 

1004 成績排名 (20分)spa

讀入 n(>)名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。code

輸入格式:

每一個測試輸入包含 1 個測試用例,格式爲htm

1 行:正整數 n 第 2 行:第 1 個學生的姓名 學號 成績 第 3 行:第 2 個學生的姓名 學號 成績 ... ... ... 第 n+1 行:第 n 個學生的姓名 學號 成績 
 

其中姓名學號均爲不超過 10 個字符的字符串,成績爲 0 到 100 之間的一個整數,這裏保證在一組測試用例中沒有兩個學生的成績是相同的。blog

輸出格式:

對每一個測試用例輸出 2 行,第 1 行是成績最高學生的姓名和學號,第 2 行是成績最低學生的姓名和學號,字符串間有 1 空格。

輸入樣例:

3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
 

輸出樣例:

Mike CS991301
Joe Math990112
 
做者: CHEN, Yue
單位: 浙江大學
時間限制: 400 ms
內存限制: 64 MB
代碼長度限制: 16 KB

 完整代碼:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct STU
 4 {
 5     string name;   //學生姓名
 6     string num;    //學生學號
 7     int score;     //學生成績
 8 };
 9 bool cmp(STU a,STU b)
10 {
11     return a.score>b.score;
12 }
13 int main()
14 {
15     int n,i;
16     scanf("%d",&n);
17     struct STU stu[n];
18     for(i=0;i<n;i++)
19     {
20         cin>>stu[i].name>>stu[i].num>>stu[i].score;
21     }
22     stable_sort(stu,stu+n,cmp);
23     cout<<stu[0].name<<" "<<stu[0].num<<endl;
24     cout<<stu[n-1].name<<" "<<stu[n-1].num<<endl;
25 }
相關文章
相關標籤/搜索