開啟章節選單
Sort 函式
極為常見上個章節我們提過了氣泡排序法,但是氣泡排序法的效率並不高,因此在實際應用中很少使用。
使用 sort()
函式
接下來,我們要介紹一個更快速簡單的方法,就是使用 C++ 的 <algorithm>
標頭檔中內建的 sort()
函式!我們可以使用 sort()
函式來排序一個容器,且 sort()
函式的效率通常比氣泡排序法高。
這個函式的使用方法非常簡單,只要傳入兩個指標,分別指向排序的起點和終點,sort()
就會自動幫你排序好了!
sort(排序起點, 排序終點, 比較函式);
注意
排序範圍包含開頭但「不包含結尾」!
以下是一個簡單的範例:
// 排序一個 vector vector<int> v = {5, 3, 6, 1, 2}; sort(v.begin(), v.end()); for (auto i : v) { cout << i << " "; } // 排序一個陣列 int arr[5] = {5, 3, 6, 1, 2}; sort(arr, arr + 5); for (int i = 0; i < 5; i++) { cout << arr[i] << " "; }
這個程式碼會輸出:
1 2 3 5 6
1 2 3 5 6
是不是非常簡單呢!
排序部分範圍
如果我們只想排序陣列的一部分,也可以透過調整排序的起點和終點來達成:
vector<int> v = {5, 3, 6, 1, 2}; // 排序索引 1 到 3 的部分 sort(v.begin() + 1, v.begin() + 4); for (auto i : v) { cout << i << " "; } int arr[5] = {5, 3, 6, 1, 2}; // 排序索引 1 到 3 的部分 sort(arr + 1, arr + 4); for (int i = 0; i < 5; i++) { cout << arr[i] << " "; }
這個程式碼會輸出:
5 1 3 6 2
這是因為我們只排序了陣列的索引 1 到 3 的部分。
小測驗
sort 函式可以只排序部分的陣列