【pta】7-15 英文單詞排序 (25 分) <stable_sort用法>
阿新 • • 發佈:2021-10-25
一、題目大意
本題要求編寫程式,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。如果長度相同,按照輸入的順序不變。
輸入格式:
輸入為若干英文單詞,每行一個,以#
作為輸入結束標誌。其中英文單詞總數不超過20個,英文單詞為長度小於10的僅由小寫英文字母組成的字串。
輸出格式:
輸出為排序後的結果,每個單詞後面都額外輸出一個空格。
輸入樣例:
blue
red
yellow
green
purple
#
結尾無空行
輸出樣例:
red blue green yellow purple
結尾無空行
二、wa程式碼
#include "bits/stdc++.h" using namespacestd; bool cmp(const string &a,const string &b) { if (a.size()!=b.size()) return a.size()<b.size(); } int main(void) { string n; vector<string>vec; while (true) { cin>>n; if (n=="#") break; vec.push_back(n); } sort(vec.begin(), vec.end(),cmp);for (auto it:vec) { cout<<it<<" "; } return 0; }
當時百思不得其解, 然後去百度了,加了幾個字元就過了 - -
三、ac程式碼
#include "bits/stdc++.h" using namespace std; bool cmp(const string &a,const string &b) { return a.size()<b.size(); } int main(void) { string n; vector<string>vec; while (true) { cin>>n; if (n=="#") break; vec.push_back(n); } stable_sort(vec.begin(), vec.end(),cmp); for (auto it:vec) { cout<<it<<" "; } return 0; }
換了stable_sort就過了
四、億些知識點
<sort>和<stable_sort>的區別
https://blog.csdn.net/earbao/article/details/54911878
參考了這篇文章,sort基於快排,stable_sort基於歸併(比快排還快一些)
stable_sort可以規避sort的不穩定性
因為在相同字串的排序中sort可能會打亂順序(比如這道題),在強一些的資料中可以體現
所以快來用stable_sort!(bushi