首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C/C++ 標準庫排序函數 sort 與 qsort 詳解

     編輯:C++ 入門

std::sort (C++)

頭文件 <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); // 降序

qsort (C)

頭文件 <stdlib.h>,快速排序,需比較函數返回 int(負/零/正)。

int cmp(const void* a, const void* b) { return *(int*)a - *(int*)b; }
qsort(arr, n, sizeof(int), cmp);

區別

std::sortqsort
語言C++C/C++
類型安全模板,編譯期類型檢查void*,運行期轉換
性能通常更快(內聯比較)函數指針調用開銷
比較函數可為函數對象/lambda只能為函數指針

C++ 首選 std::sort。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved