介紹如何使用 C++ 內建的排序函數來排序一般的陣列。
若要在 C++ 程式語言中排序一般的陣列,可以直接使用 STL 標準函式庫中所提供的 sort
函數,其用法如下:
#include <iostream> // 使用 sort 函數需要引入 algorithm 標頭檔 #include <algorithm> using namespace std; int main() { int arr[6] = {5, 3, 2, 6, 1, 4}; // 排序 arr 陣列,需指定排序的起始與結束範圍 sort(arr, arr + 6); for (int i = 0; i < 6; i++) { cout << arr[i] << " "; } cout << endl; return 0; }
編譯並執行之後,結果為:
1 2 3 4 5 6
#include <iostream> #include <algorithm> using namespace std; // 自訂比較函數 bool compare(int a, int b) { return a > b; } int main() { int arr[6] = {5, 3, 2, 6, 1, 4}; // 自訂排序 sort(arr, arr + 6, compare); for (int i = 0; i < 6; i++) { cout << arr[i] << " "; } cout << endl; return 0; }
編譯並執行之後,結果為:
6 5 4 3 2 1
如果想要讓程式自動計算陣列長度,排序整個陣列,可以運用 sizeof
函數:
int arr[6] = {5, 3, 2, 6, 1, 4}; // 自動計算陣列長度 int len = sizeof(arr) / sizeof(int); // 排序 sort(arr, arr + len);
若要排序陣列中部份的元素(其餘保持不變),可以改變呼叫 sort
函數時所指定的排序範圍:
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[6] = {5, 3, 2, 6, 1, 4}; // 排序前 4 個元素 sort(arr, arr + 4); for (int i = 0; i < 6; i++) { cout << arr[i] << " "; } cout << endl; return 0; }
編譯並執行之後,結果為:
2 3 5 6 1 4
C++ 的向量也可以使用 sort
函數來進行排序,用法大同小異:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> vec {5, 3, 2, 6, 1, 4}; // 排序 vector sort(vec.begin(), vec.end()); for (int i = 0; i < 6; i++) { cout << vec[i] << " "; } cout << endl; return 0; }
編譯並執行之後,結果為:
1 2 3 4 5 6