# Sort Algorithm
{%hackmd theme-dark %}
---
## 排序是寫程式當中相當重要的一環
----
### 輸入一串數字
### 3 5 1 4 2
### 請將他排序
----
### 對於這個問題
### 人腦可以直接解決
### 但對電腦需要一套固定的模式讓他解決
### 這種解決問題的方法就稱為演算法
---
## Bubble Sort
----
### 請看白板
----
### 實做部分
```cpp=
#include <iostream>
using namespace std;
int main() {
int arr[100] = {2147483647};
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
```
---
## 優化部分
----
### 請看白板
----
```cpp=
#include <iostream>
using namespace std;
int main() {
int arr[100] = {2147483647};
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
```
### 如此可以減少約一半的運算量
---
## 內建的排序工具
----
### 在algorithm函式庫當中有內建sort函式
```cpp=
sort(arr, arr + n);
```
### 此處arr與arr + n代表兩位子
### 聽得懂就聽,聽不懂要會用
### 這個非常好用!!!
{"metaMigratedAt":"2023-06-15T12:43:03.902Z","metaMigratedFrom":"YAML","title":"Sort Algorithm","breaks":true,"slideOptions":"{\"spotlight\":{\"enabled\":false}}","contributors":"[{\"id\":\"739c72cc-15ad-447f-a374-8309c01a2725\",\"add\":5,\"del\":0},{\"id\":\"5b103006-4946-4e27-87aa-2ce75fd5fc72\",\"add\":1280,\"del\":20}]"}