C 排序函式 sort

2021-08-19 16:56:54 字數 1267 閱讀 3056

想起來自己天天排序排序,冒泡啊,二分查詢啊,結果在stl中就自帶了排序函式sort

所以自己總結了一下,首先看sort函式見下表:

函式名功能描述

sort

對給定區間所有元素進行排序

stable_sort

對給定區間所有元素進行穩定排序

partial_sort

對給定區間所有元素部分排序

partial_sort_copy

對給定區間複製並排序

nth_element

找出給定區間的某個位置對應的元素

is_sorted

判斷乙個區間是否已經排好序

partition

使得符合某個條件的元素放在前面

stable_partition

相對穩定的使得符合某個條件的元素放在前面

要使用此函式只需用#include sort即可使用,語法描述為:

sort(begin,end),表示乙個範圍,例如:

int _tmain(int argc, _tchar* argv)

,i;for(i=0;i<20;i++)

cout<

輸出結果將是把陣列a按公升序排序,說到這裡可能就有人會問怎麼樣用它降序排列呢?這就是下乙個討論的內容.

一種是自己編寫乙個比較函式來實現,接著呼叫三個引數的sort:sort(begin,end,compare)就成了。對於list容器,這個方法也適用,把compare作為sort的引數就可以了,即:sort(compare).

1)自己編寫compare函式:

bool compare(int a,int b)

int _tmain(int argc, _tchar* argv)

,i;for(i=0;i<20;i++)

cout<3)其實對於這麼簡單的任務(型別支援「<」、「>」等比較運算子),完全沒必要自己寫乙個類出來。標準庫里已經有現成的了,就在functional裡,include進來就行了。functional提供了一堆基於模板的比較函式物件。它們是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。對於這個問題來說,greater和less就足夠了,直接拿過來用:

int _tmain(int argc, _tchar* argv)

,i;for(i=0;i<20;i++)

cout<());

for(i=0;i<20;i++)

cout

}

sort排序函式

所以自己總結了一下,首先看sort函式見下表 函式名 功能描述 sort 對給定區間所有元素進行排序 stable sort 對給定區間所有元素進行穩定排序 partial sort 對給定區間所有元素部分排序 partial sort copy 對給定區間複製並排序 nth element 找出給...

sort 排序函式

需要標頭檔案 語法描述 sort begin,end,cmp cmp引數可以沒有,如果沒有預設公升序排序。sort函式使用例項 include include includeusing namespace std int main sort a,a 5 for int i 0 i 5 i cout ...

sort 排序函式

include include 因為用了sort 函式 include 因為用了greater using namespace std void main int i int len sizeof a sizeof int 這裡切記要除以sizeof int sort a a len,greater...