# ZeroJudge a233 題目在這: [Link](https://zerojudge.tw/ShowProblem?problemid=a233) --- ## 解題思路 用 [Merge Sort 合併演算法](https://hackmd.io/@HyC-1029/HyCpp/%2FhuX49kWnRoC0_7w3Ro6_9A#%E5%90%88%E4%BD%B5%E6%8E%92%E5%BA%8F-Merge-Sort)的方式 > 合併演算法是透過 分治法來遞迴實現將大問題分割成小問題 # 解 ```cpp= #include <bits/stdc++.h> #define io ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; typedef long long ll; void MerSort(vector<int> &a, int l,int r) { if (r-l==1) return ; int m = (l+r)/2; MerSort(a,l,m); MerSort(a,m,r); int i{l}; int j{m}; vector<int> curr; while (i<m || j<r){ if (i<m && (j==r || a[i]<= a[j])) curr.push_back(a[i++]); else curr.push_back(a[j++]); } copy(curr.begin(),curr.end(),a.begin()+l); } int main() { int t; cin >> t; vector<int> li(t); for (int i{0};i<t;i++)cin >> li[i]; MerSort(li,0,t); for (auto i:li) cout << i << " "; } ```