#include<iostream>
#include<algorithm>
unsigned int n;
using namespace std;
int main(){
cin>>n;
int nums[n];
for(unsigned int lcv = 0;lcv<n;lcv++)
cin>>nums[lcv];
sort(nums,nums+n);
for(unsigned int lcv = 0;lcv<n;lcv++)
cout<<nums[lcv]<<' ';
return 0;
}
用<algorithm>裡面的sort(),一秒就好了,幹嘛那麼麻煩?
對於你的疑問, 本人以自身的觀點來回覆你:
1. 使用STL的sort()固然快速又方便, 但在本題的情況(只有3種數值), 顯然使用 Counting Sort O(N) 在效率上比使用 STL的sort() O(NlgN) 還來的更好, 只是本題測資規模不大所以無法體現出明顯的差異, 雖然你可能認為只要將題目給AC就好何必多此一舉? 但我認為寫題目不應只追求AC而已, 有時候是要追求更好的演算法, 這樣對於未來碰到困難(或很機車(?))的題目時會有所幫助的。
2. 站在程式設計的角度來看, 程式碼短實在沒什麼好炫耀的, 程式碼短通常代表著可讀性差, 若為了簡短程式碼而使用效率較差的演算法就又更本末倒置了, 而且別忘了現在是直接使用STL的sort()才看起來很短, 實際上在<algorithm>中實作sort()可沒那麼簡單(詳細可以參考這裡), 另外在不同的環境甚至不同的語言不見得會有像C++的STL好用的模板庫, 最後如果真的要比短, 顯然隨便寫都能寫出比上面更短的程式碼啊。