頭文件 <algorithm>,平均 O(n log n),Introsort(快速排序+堆排序+插入排序)。
sort(begin, end):升序,要求類型支持 operator<。sort(begin, end, cmp):自定義比較,cmp(a,b) 返回 true 表示 a 排在 b 前。struct Student { char name[20]; int grade; };
bool cmp(const Student& a, const Student& b) { return a.grade > b.grade; }
sort(stu, stu+n, cmp); // 降序
頭文件 <stdlib.h>,快速排序,需比較函數返回 int(負/零/正)。
int cmp(const void* a, const void* b) { return *(int*)a - *(int*)b; }
qsort(arr, n, sizeof(int), cmp);
| std::sort | qsort | |
|---|---|---|
| 語言 | C++ | C/C++ |
| 類型安全 | 模板,編譯期類型檢查 | void*,運行期轉換 |
| 性能 | 通常更快(內聯比較) | 函數指針調用開銷 |
| 比較函數 | 可為函數對象/lambda | 只能為函數指針 |
C++ 首選 std::sort。