1樓:匿名使用者
last不算的, 這是stl的慣例.
stl中的所有演算法, first~last這樣的引數, 都是不算在內的.
int a[4] 這樣的資料排序.
引數就是 first = a last = a+4 一共4個資料, 分別是a+0, a+1, a+2, a+3
last也就是a+4不算在內.
至於內部編碼, std::sort的實現是函式模板.
下面是vc編譯器的源**, 在algorithm標頭檔案中. 這個標頭檔案就是stl的演算法庫.
template inline
void _sort(_ranit _first, _ranit _last, _diff _ideal, _pr _pred)
else
}if (_isort_max < _count)
else if (1 < _count)
_insertion_sort(_first, _last, _pred); // small}
2樓:匿名使用者
last不算的,因為sort函式要求的是兩個指標地址,假設,char ch[5].....;那麼排序的時候就是,ch,ch+6
急求!!!!!c++中sort()函式的用法!
3樓:匿名使用者
系統剛裝好,在更新,還沒裝g++,等更新好了調一下
4樓:
sort(s,s+n,cmp);
傳入的引數是 s,可以理解為 str *,即 指向字串的指標使用 sort 需要處理幾個問題:
1. ++操作;
2. 比較;
3. 賦值
你對於第三個沒有處理,
假定有變數
str a,b;
a = b; // 這樣是不可以的
5樓:
你的s是同一個字串裡的,應該把s分開,當成字尾,如果排序的話可以用字尾陣列來做
sort函式的具體用法?
6樓:少男少女
做acm題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的o(n^2)排序,不但程式容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。stl裡面有個sort函式,可以直接對陣列排序,複雜度為n*log2(n)。
使用這個函式,需要包含標頭檔案。
這個函式可以傳兩個引數或三個引數。第一個引數是要排序的區間首地址,第二個引數是區間尾地址的下一地址。也就是說,排序的區間是[a,b)。
簡單來說,有一個陣列int a[100],要對從a[0]到a[99]的元素進行排序,只要寫sort(a,a+100)就行了,預設的排序方式是升序。
拿我出的“ac的策略”這題來說,需要對陣列t的第0到len-1的元素排序,就寫sort(t,t+len);
對向量v排序也差不多,sort(v.begin(),v.end());
排序的資料型別不侷限於整數,只要是定義了小於運算的型別都可以,比如字串類string。
如果是沒有定義小於運算的資料型別,或者想改變排序的順序,就要用到第三引數——比較函式。比較函式是一個自己定義的函式,返回值是bool型,它規定了什麼樣的關係才是“小於”。想把剛才的整數陣列按降序排列,可以先定義一個比較函式cmp
bool cmp(int a,int b)
排序的時候就寫sort(a,a+100,cmp);
假設自己定義了一個結構體node
struct node
有一個node型別的陣列node arr[100],想對它進行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b還相同,就按c降序排列。就可以寫這樣一個比較函式:
以下是**片段:
bool cmp(node x,node y)
排序時寫sort(arr,a+100,cmp);
qsort(s[0],n,sizeof(s[0]),cmp);
int cmp(const void *a,const void *b)
一、對int型別陣列排序
int num[100];
sample:
int cmp ( const void *a , const void *b )
qsort(num,100,sizeof(num[0]),cmp);
二、對char型別陣列排序(同int型別)
char word[100];
sample:
int cmp( const void *a , const void *b )
qsort(word,100,sizeof(word[0]),cmp);
三、對double型別陣列排序(特別要注意)
double in[100];
int cmp( const void *a , const void *b )
qsort(in,100,sizeof(in[0]),cmp);
四、對結構體一級排序
struct in
s[100]
//按照data的值從小到大將結構體排序,關於結構體內的排序關鍵資料data的型別可以很多種,參考上面的例子寫
int cmp( const void *a ,const void *b)
qsort(s,100,sizeof(s[0]),cmp);
五、對結構體
struct in
s[100];
//按照x從小到大排序,當x相等時按照y從大到小排序
int cmp( const void *a , const void *b )
qsort(s,100,sizeof(s[0]),cmp);
六、對字串進行排序
struct in
s[100];
//按照結構體中字串str的字典順序排序
int cmp ( const void *a , const void *b )
qsort(s,100,sizeof(s[0]),cmp);
七、計算幾何中求凸包的cmp
int cmp(const void *a,const void *b) //重點cmp函式,把除了1點外的所有點,旋轉角度排序
7樓:
msdn中的定義:
templatevoid sort(ranit first, ranit last); //--> 1)templatevoid sort(ranit first, ranit last, pred pr); //--> 2)
標頭檔案:
#include
using namespace std;
1.預設的sort函式是按升序排。對應於1)
sort(a,a+n); //兩個引數分別為待排序陣列的首地址和尾地址
2.可以自己寫一個cmp函式,按特定意圖進行排序。對應於2)
例如:int cmp( const int &a, const int &b )
sort(a,a+n,cmp);
是對陣列a降序排序
又如:int cmp( const point &a, const point &b )
else
return 0;
}sort(a,a+n,cmp);
是先按x升序排序,若x值相等則按y升序排
與此類似的還有c中的qsort,以下同附上qsort的使用方法:
#include
格式 qsort(array_name,data_number,sizeof(data_type),compare_function_name) (void*)bsearch (pointer_to_key_word,array_name,find_number,
sizeof(data_type),compare_function_name)
e.g.
int cmp(const void*a,const void *b)
qsort(data,n,sizeof(int),cmp); // 對int型陣列進行快速排序(非降序排列)
p=(int*)bsearch(&a,data,n,sizeof(int),cmp);
8樓:匿名使用者
sort函式的用法(c++排序庫函式的呼叫)
對陣列進行排序,在c++中有庫函式幫我們實現,這們就不需要我們自己來程式設計進行排序了。
(一)為什麼要用c++標準庫裡的排序函式
sort()函式是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n*log2(n),執行效率較高!
(二)c++標準庫裡的排序函式的使用方法
i)sort函式包含在標頭檔案為#include的c++標準庫中,呼叫標準庫裡的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!
ii)sort函式有三個引數:
(1)第一個是要排序的陣列的起始地址。
(2)第二個是結束的地址(最後一位要排序的地址的下一地址)
(3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。
sort函式使用模板:
sort(start,end,排序方法)
下面就具體使用sort()函式結合對陣列裡的十個數進行排序做一個說明!
例:sort函式沒有第三個引數,實現的是從小到大
#include
#include
using namespace std;
int main()
;for(int i=0;i<10;i++)
cout<
sort(a,a+10); for(int i=0;i<10;i++) cout<
return 0;} 9樓:匿名使用者 sort n.種類, 類別, 品種 品質, 本性, 性質 方法, 情形, 樣子, 程度 某種人[物] 【刷】 一套鉛字; [pl. ] 【紡】同級毛, 同型毛 [古](一)群, (一)夥 under all sorts of names 以各種各樣的名義 people of every sort and kind 各種各樣的人 they'll never stomach that sort of attitude. 他們永遠不會容忍那樣的態度。 he is the right sort. 他倒是挺合適的人。 he is my sort. 他正是我需要的人。 queer sort (of a thing)this! [口]這(東西)倒挺妙! this copy is hard [runs] on sorts . 【刷】這件稿子要用幾種鉛字排。 習慣用語 after a sort 有些, 稍微, 有幾分 in a sort 有些, 稍微, 有幾分 all of a sort 差不多, 大同小異 all sort(s) of (=of all sorts) 各種各樣的 all sorts and conditions of men(=men of all conditions) 各種各樣的人, 各階層的人 and that sort of thing 以及諸如此類的事情, 等等 a sort of 一種, 可以說是...的東西 he is not my sort. [口]他不是我喜歡的那種人。 in any sort 無論如何, 必須 in a sort of way 略為, 比較 in some sort 多少, 稍微 in a sort 多少, 稍微 it takes all sorts (to make a world) 世上的人是形形色色[無奇不有] no sort of 毫無[不]; 完全不是; 和...全不相稱 nothing of the sort 根本沒有那樣的事情 of a sort 同一種[類], 相當的, 勉強稱得上的, 較差的, 所謂的 of all sorts 各種各樣的 of every sort and kind 各種各樣的 of one's sort 和某人同樣身分[性質, 品性]的 of sorts =of a sort 各種各樣的, 未經挑選的 of the sort 那樣的; 這類的...., 諸如此類的... out of sorts 覺得不舒服, 情緒不佳, 心裡不自在; 【刷】鉛字不全 some sort of 某種 的, 彷彿, 多少有些 that sort of thing 那[這]一類的事情 this sort of thing 那[這]一類的事情 that's your sort! [口]那樣做挺好! 那就是你的想法! the better sort [口]出色的人, 更高一級的人, 優秀的人 what sort of? 什麼樣的? 怎樣的? sort ill with sth. 同某事物不相稱, 同某物不協調 sort of [作狀語用]有幾分地; 在一定程度上 kind of [作狀語用]有幾分地; 在一定程度上 sort out 整理好挑出 解決整頓 懲罰, 打敗 [和反身代詞連用]解決...之間的問題, (使)恢復正常 sort out from 把...從...挑出來 sort well with sth. 同某物相稱, 同某物協調 先分析你第乙個while迴圈,你這樣寫,每次迴圈都要先讀入乙個字元,判斷是否是n,再判斷能否寫入數到陣列。舉個例子,你輸入12,1是乙個字元,1不等於n,所以你讀入2到陣列a 0 i 變為1。你按回車鍵,回車鍵算乙個字元,且不是n,所以你輸入421到陣列a 1 i 變為2。同樣道理,這就解釋了你為什... 天霖子 就是說你做事的方法不對,不容易成功,不能盡如人意。 大易習貞 解卦首先要看你是怎麼起卦。正宗的六爻卦是三枚銅錢手搖成卦。是六爻生剋制化看吉凶,不是像解籤的。還要看你問什麼事情。 中國神算網 這個卦象看 是萬事不順 不能心想事成的卦象 懂算命的幫忙解釋一下吧! 萬事由天莫苦求,須知福碌賴人修 ... 我粗略看了下,就注意一些常用的引數。優化的指令碼 關閉了動態準星 cl dynamiccrosshair 0cl cmdrate 101 cl updaterate 101 你第二個指令碼此引數一樣 上面2個網路引數按照區域網正規比賽的設定,所以你感覺adsl的延遲高了點。討厭ap的叫法 就像討厭n...求大神解釋下這個c語程式,求大神解釋下這個C語程式
求懂算卦的幫忙解釋一下,求懂算卦的幫忙解釋一下。 50
求cs CFG高人表達下!cs高手幫我解釋cfg