a104 - 排序
題目描述
題目要求讀取多組整數,每組包含一個正整數 n,以及 n 個正整數。對於每組輸入,將這 n 個整數由小到大排序後輸出。輸入以 EOF 結束。
解題思路
此題為基本的排序問題。程式碼使用冒泡排序演算法對輸入的整數陣列進行排序。冒泡排序重複地遍歷陣列,比較相鄰的元素,如果順序錯誤則交換它們。這個過程會重複進行,直到陣列排序完成。
複雜度分析
- 時間複雜度: O(n^2) (冒泡排序在最壞和平均情況下的時間複雜度都是 O(n^2))
- 空間複雜度: O(1) (使用了常數額外的空間)
程式碼
#include <iostream>
using namespace std;
int main(){
int n=0;
int c=0;
while(cin >> n){
int a[n];
for(int i=0;i<n;i++){
cin >> a[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){
if(a[j]>a[j+1]){
c=a[j+1];
a[j+1]=a[j];
a[j]=c;
}
}
}
for(int i=0;i<n;i++){
cout << a[i] << " ";
}
cout << endl;
}
return 0;
}