# Sorting# Array

d190 - 11462 - Age Sort

🔗 前往 ZeroJudge 原題

題目描述

題目要求將輸入的一組年齡數據進行排序,並以從小到大的順序輸出。輸入以人數 n 作為起點,接著輸入 n 個年齡值。當 n 為 0 時,表示輸入結束。

解題思路

本題的解題思路非常直接,使用標準的排序演算法即可解決。具體步驟如下:

  1. 讀取人數 n。
  2. 如果 n 大於 0,則創建一個大小為 n 的整數陣列 a。
  3. 讀取 n 個年齡值,存儲到陣列 a 中。
  4. 使用 std::sort 函數對陣列 a 進行排序。
  5. 輸出排序後的陣列 a 中的所有元素,元素之間用空格分隔。
  6. 如果 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;
		}
	}
	
}

Discussion