從別人****來的
**是http://bbs.ecust.edu.cn/archiver/?tid-14302.html
因為在學,怕忘了,算作是筆記吧
sort的用法
按照給定的方案給區間中的元素排序。
載入標頭檔案#include
函式原型:
template
void sort (randomaccessiterator _first, randomaccessiterator _last);
template
void sort (randomaccessiterator _first, randomaccessiterator _last, binarypredicate _comp);
傳入引數說明:
_first 要排序區間的起始位置
_last 要排序區間的結束位置
_comp 自定義的表示順序關係的函式物件。
說明:要排序區間必須是合法的,並且所有元素是可提領的。區間中的元素必須是在有限步內可達的。
該演算法不是穩定的,不保持元素的相對先後順序。
該演算法的平均的時間複雜性為o(n long n),中 n = _last-_first
演示sort的功能及使用方法;
[code]
#include
#include
using namespace std;
#define n 5
struct node ;
bool mycmp(const node & a, const node & b)
//貌似這裡定義的關係必須是乙個(良序x)的關係……否則sort將不能正常工作。 {
return a.elem1
2006-8-11 23:29ddotcdot
良序關係的說法是不準確的,因為良序關係是一種全序關係,這恰恰是不正確的。
準確的說法是嚴格弱序關係(strict weak ordering),滿足非自反性(irreflexive),反對稱性(antisymmetric),傳遞性(transitive)以及等價傳遞性(transitivity of equivalence)。其中前三條定義的是嚴格偏序關係(strict partial ordering)。良序關係雖然是偏序關係,但不是嚴格偏序關係,因為其不滿足非自反性,因此不是嚴格弱序關係。
設x,y為集合s中的元素,r為s上的嚴格弱序關係,則當x r y和y r x都不滿足時,x與y等價。例如實數集上的《關係和》關係都是嚴格弱序的,而<=和》=就不是。因為如a當然實際使用的時候並不需要考慮那麼多。只需要知道,因為是「嚴格」的,所以只有像《這樣的關係,而沒有像<=這樣的關係。換句話講,如果你要定義《的關係,則你的謂詞只有在《的情況下才能返回true,其他情況(如=和》)下一律要返回false。在sort中使用非嚴格弱序關係的後果是不確定的,根據編譯器實現的不同,可能會正常工作,也可能會引起未定義的行為,導致死迴圈或非法操作。這是初學者通常會犯的錯誤(我當年就犯過:()。
sort函式的用法
sort函式的用法 做acm題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的o n 2 排序,不但程式容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。stl裡面有個sort函式,可以直接對陣列排序,複雜度為n log2 n 使用這個函式,需要包含標頭檔案。這個函式可以傳兩個引數或...
sort的高深用法
1 sort sort 對給定區間所有元素進行排序 stable sort 對給定區間所有元素進行穩定排序 partial sort 對給定區間所有元素部分排序 partial sort copy 對給定區間複製並排序 nth element 找出給定區間的某個位置對應的元素 is sorted 判...
sort函式的用法
sort函式包含在標頭檔案 include 中 1 預設的sort函式是按公升序排。sort a,a n 兩個引數分別為待排序陣列的首位址和尾位址,或者可以首尾指標。又如 vector iterator iter1 v.begin vector iterator iter2 v.begin sort...