---
# System prepended metadata

title: 泡沫排序 - Bubble Sort
tags: [東華大學資管系, 資管經驗分享, 東華大學, 大一程設, 基本程式概念, 實習題目]

---

###### tags: `實習題目` `大一程設` `東華大學` `東華大學資管系` `基本程式概念` `資管經驗分享`
# 泡沫排序 - Bubble Sort

請寫一個程式，最一開始讓使用者可以輸入要幾個數字，並利用**Bubble Sort**排序法將這些數字**由小排到大**。

<font size="4">**What is Bubble Sort?**</font>
假設我們的陣列依序值是 <font size="2">**2 1 5 4 3**</font>，Bubble sort會依序兩兩值做比較，當左邊的值大於右邊的值時，就會對調兩值的位置。

一開始 **[<span style="color:red;">0</span>]** ~ **[<span style="color:red;">1</span>]** 先做比較，因為**2 >1**因此把 **[<span style="color:red;">0</span>]** 跟 **[<span style="color:red;">1</span>]** 的值對調
:point_right: <font size="2">**1 2 5 4 3**</font>
 

接著 **[<span style="color:red;">1</span>]** ~ **[<span style="color:red;">2</span>]** 做比較，因為 **2 < 5** 因此 **[<span style="color:red;">1</span>]** 跟 **[<span style="color:red;">2</span>]** 的值不需要對調
:point_right: <font size="2">**1 2 5 4 3**</font>


**[<span style="color:red;">2</span>]** ~ **[<span style="color:red;">3</span>]** 做比較，因為 **5 > 4** 因此 **[<span style="color:red;">2</span>]** 跟 **[<span style="color:red;">3</span>]** 的值需要對調
:point_right: <font size="2">**1 2 4 5 3**</font>

**[<span style="color:red;">3</span>]** ~ **[<span style="color:red;">4</span>]** 做比較，因為 **5 > 3** 因此 **[<span style="color:red;">3</span>]** 跟 **[<span style="color:red;">4</span>]** 的值需要對調
:point_right: <font size="2">**1 2 4 3 5**</font>

做完第一輪後，我們會發現最後一個陣列 **[<span style="color:red;">4</span>]** 的值一定是最大的，因此在接下來的排序跟前面一樣，只是我們可以省略對最後一個值的排序，僅需要排 **[<span style="color:red;">0</span>]** ~ **[<span style="color:red;">3</span>]**， **[<span style="color:red;">3</span>]** 排完可省略，接著 **[<span style="color:red;">0</span>]** ~ **[<span style="color:red;">2</span>]**， **[<span style="color:red;">2</span>]** 排完可省略 ，最後 **[<span style="color:red;">0</span>]** ~ **[<span style="color:red;">1</span>]**。

## Constraint
* 請設計一個一維陣列來儲存你的這些數字
* 並請符合 Bubble Sort 的規則
* 數列最多輸入10個數字
---
**Sample Input1:**
```
5
100 2001 12 4 19
```
**Sample Output1:**
```
4 12 19 100 2001
``` 
---

**Sample Input2:**
```
10
10 9 8 7 6 5 4 3 2 1
```
**Sample Output2:**
```
1 2 3 4 5 6 7 8 9 10
``` 