# Sorting# Bubble Sort# Array

a104 - 排序

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀取多組整數,每組包含一個正整數 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;
}

Discussion