sort函式的效率

2021-10-09 20:12:31 字數 1303 閱讀 7601

最近本蒟蒻做了乙個實驗,測試sort的效率。

我使用windows10(沒開-o2)系統試驗了三種排序方法:過載運算子,傳入函式指標以及傳入仿函式。

以下n表示給多少個資料排序,對於每個n都測了三次:(單位:ms)

n過載運算子

函式仿函式

500000

80140

80500000

80124

80500000

80139

801000000

172271

1641000000

182279

1741000000

180372

1705000000

9501505

9645000000

9691514

9665000000

9661570

97010000000

1994

3126

2007

10000000

2005

3140

2051

10000000

2007

3155

2015

綠書上的資料(n=10000000):

functor:6324

function:36372

當然我不知道作者用的什麼系統,反正比我慢就對了。

可以看到,傳入乙個函式進行排序是最慢的,而過載運算子和functor速度基本一樣,不過對於n小的資料基本上都是functor快幾毫秒,完全可以忽略不計,如果只按照一種規則排序推薦使用過載運算子,多種規則那也只能functor了。

最後給出測試**:

#include

#include

#include

using

namespace std;

struct nodgd

} a[

10000001

], b[

10000001

], c[

100000001

], d[

10000001];

inline

bool

operator

<

(const nodgd a,

const nodgd b)

struct cmp };

inline

bool

cmp(

const nodgd a,

const nodgd b)

intmain()

sort函式的用法

sort函式的用法 做acm題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的o n 2 排序,不但程式容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。stl裡面有個sort函式,可以直接對陣列排序,複雜度為n log2 n 使用這個函式,需要包含標頭檔案。這個函式可以傳兩個引數或...

sort函式的用法

sort函式包含在標頭檔案 include 中 1 預設的sort函式是按公升序排。sort a,a n 兩個引數分別為待排序陣列的首位址和尾位址,或者可以首尾指標。又如 vector iterator iter1 v.begin vector iterator iter2 v.begin sort...

Sort函式的用法

stl 裡面有個 sort 函式,可以直接對陣列排序,複雜度為 n log2 n 使用這個函式,需要包含標頭檔案。這個函式可以傳 兩個引數或三個引數 第乙個引數是要排序的 區間首位址 第二個引數是 區間尾位址的下一位址 也就是說,排序的區間是 a,b 簡單來說,有乙個陣列int a 100 要對從a...