d190 - 11462 - Age Sort
題目描述
題目要求將輸入的一組年齡數據進行排序,並以從小到大的順序輸出。輸入以人數 n 作為起點,接著輸入 n 個年齡值。當 n 為 0 時,表示輸入結束。
解題思路
本題的解題思路非常直接,使用標準的排序演算法即可解決。具體步驟如下:
- 讀取人數 n。
- 如果 n 大於 0,則創建一個大小為 n 的整數陣列 a。
- 讀取 n 個年齡值,存儲到陣列 a 中。
- 使用
std::sort函數對陣列 a 進行排序。 - 輸出排序後的陣列 a 中的所有元素,元素之間用空格分隔。
- 如果 n 為 0,則結束程式。
複雜度分析
- 時間複雜度: O(n log n) (主要來自
std::sort的時間複雜度) - 空間複雜度: O(n) (用於儲存年齡的陣列)
程式碼
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n=0;
while(cin >> n){
if(n>0){
int a[n];
for(int i=0;i<n;i++){
cin >> a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++){
if(i!=n-1){
cout << a[i] << " ";
}
else{
cout << a[i];
}
}
cout << endl;
}
}
}