分析和思路:
把成績儲存到map或者vector中,然後進行排序。這道題關鍵是處理那個成績相等時,排序後依然保持相對順序不變的問題,費了好大的心思,發現效果依然不是自己想要的,寫出的**如下:
1 #include "想通過vector元素的順序來確定map中元素的順序,但是依然是map自動排序了。iostream
"2 #include 3 #include 4 #include "
algorithm
"5 #include 6
using
namespace
std;
7int
main()8;
21 unordered_mapm;
22int i=0;//
注意細節
23while(i
2431
sort(vector_score.begin(),vector_score.end());
32//
printf("v size%d",vector_score.size());
33//
printf("m size%d",m.size());
34if(mode==1)35
47}48}
49m.clear();
50vector_score.clear();51}
52else
if(mode==0)53
65}66}
67m.clear();
68vector_score.clear();69}
70}7172
return0;
7374 }
解決辦法:使用穩定排序stable_sort,改進後的**如下:
1 #include 2 #include3 #include 4 #include 5
//#include
6using
namespace
std;78
bool cmp0(const pair &a,const pair &b)912
13bool cmp1(const pair &a,const pair &b)
1417
18void mysort(int n,int
flag)
1926
if(flag==0)27
30else
if(flag==1)31
3435
for(int i=0;i)
3639}40
41int
main()
4248
return0;
49 }
演算法 成績排序
統計一下班裡 n n 名同學在這次數學競賽中,成績在以下各類別的人數。要求 分數為整數,用變數 f f 表示,以百分制作為記分標準。成績在 90 leq f leq 10090 f 1 00 分數之間,用 you 來標識 成績在 80 leq f leq 8980 f 8 9 分數之間,用 lian...
機試之排序 成績排序
用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入描述 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出描述 按照學生的成績從小到大進行排序,並將排序後的學生資訊列印出來。如果學生的成績相同,則按照學號的大小進行從小到...
演算法之 查詢演算法 氣泡排序
查詢演算法 順序查詢 從頭到尾逐個比較 氣泡排序 思路 依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面。1 第一次比較 首先比較第一和第二個數,將小數放在前面,將大數放在後面。2 比較第2和第3個數,將小數 放在前面,大數放在後面。3 如此繼續,知道比較到最後的兩個數,將小數放在前面...