C std sort 函式使用

2021-10-03 10:10:02 字數 1410 閱讀 7186

template

<

class

randomit

,class

compare

>

constexpr

void

sort

( randomit first, randomit last, compare comp )

;

以一定排序規則排序指定範圍內的元素,但是演算法不具有穩定性,如果元素的值是相同的話不保證它們的相對順序保持不變。

first , last - 要排序的元素範圍。

comp - 比較的函式,這裡要滿足compare的要求,如下:

總結下來一句話:就是在compare(int a ,int b)中,如果你想要從小到大排列,那麼你需要的是 return a平均 o(n·log(n)) 次比較,其中 n = std::distance(first, last) 。

我們需要注意的是sort()採用的是優化版本的快速排序,在最後階段採用直接插入排序。因此時間複雜度為o(n·log(n))

#include

#include

#include

#include

intmain()

;// 用預設的 operator< 排序

std::

sort

(s.begin()

, s.

end())

;for

(auto a : s)

std::cout <<

'\n'

;// 用標準庫比較函式物件排序

std::

sort

(s.begin()

, s.

end(

), std::greater<

int>()

);for(

auto a : s)

std::cout <<

'\n'

;// 用自定義函式物件排序

struct

} customless;

std::

sort

(s.begin()

, s.

end(

), customless)

;for

(auto a : s)

std::cout <<

'\n'

;// 用 lambda 表示式排序

std::

sort

(s.begin()

, s.

end(),

(int a,

int b));

for(

auto a : s)

std::cout <<

'\n'

;}

C std sort 函式使用總結

template class randomit,class compare constexpr void sort randomit first,randomit last,compare comp 以一定排序規則排序指定範圍內的元素,但是演算法不具有穩定性,如果元素的值是相同的話不保證它們的相對順...

函式 使用函式指標操作函式

設計乙個名為calculate 的函式,他接受兩個double 值和乙個指向函式的指標,而被指向的函式接受兩個double引數,並返回乙個double值 calculate 函式的型別也是double,並返回被指向的函式值用calculate 的兩個double引數計算得到的值。例如,假設add 函...

eval函式 php PHP eval函式使用介紹

eval echo hello world 上邊 等同於下邊的 echo hello world 在瀏覽器中都輸出 hello world 運用eval 要注意幾點 1.eval函式的引數的字串末尾一定要有分號,在最後還要另加乙個分號 這個分號是php限制 2.注意單引號,雙引號和反斜槓的運用。如果...