這篇文章將為大家詳細(xì)講解有關(guān)排序函數(shù)sort怎么用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
四平ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!函數(shù)名 | 功能描述 |
---|---|
sort | 對(duì)給定區(qū)間所有元素進(jìn)行排序 |
stable_sort | 對(duì)給定區(qū)間所有元素進(jìn)行穩(wěn)定排序 |
partial_sort | 對(duì)給定區(qū)間所有元素部分排序 |
partial_sort_copy | 對(duì)給定區(qū)間復(fù)制并排序 |
nth_element | 找出給定區(qū)間的某個(gè)位置對(duì)應(yīng)的元素 |
is_sorted | 判斷一個(gè)區(qū)間是否已經(jīng)排好序 |
partition | 使得符合某個(gè)條件的元素放在前面 |
stable_partition | 相對(duì)穩(wěn)定的使得符合某個(gè)條件的元素放在前面 |
要使用此函數(shù)只需用#include
sort(begin,end),表示一個(gè)范圍,
例如:
int _tmain(int argc, _TCHAR* argv[]) { int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout<輸出結(jié)果將是把數(shù)組a按升序排序,說(shuō)到這里可能就有人會(huì)問(wèn)怎么樣用它降序排列呢?這就是下一個(gè)討論的內(nèi)容.
一種是自己編寫(xiě)一個(gè)比較函數(shù)來(lái)實(shí)現(xiàn),接著調(diào)用三個(gè)參數(shù)的sort:sort(begin,end,compare)就成了。對(duì)于list容器,這個(gè)方法也適用,把compare作為sort的參數(shù)就可以了,即:sort(compare).
1)compare函數(shù)作為參數(shù):bool compare(int a,int b) { return ab,則為降序 } int _tmain(int argc, _TCHAR* argv[]) { int a[20]={2,4,1,23,5,76,0,43,2,65},i; for(i=0;i<20;i++) cout<2)更進(jìn)一步,讓這種操作更加能適應(yīng)變化。也就是說(shuō),能給比較函數(shù)一個(gè)參數(shù),用來(lái)指示是按升序還是按降序排,這回輪到函數(shù)對(duì)象出場(chǎng)了。
為了描述方便,我先定義一個(gè)枚舉類型EnumComp用來(lái)表示升序和降序。很簡(jiǎn)單:
enum Enumcomp{ASC,DESC};
然后開(kāi)始用一個(gè)類來(lái)描述這個(gè)函數(shù)對(duì)象。它會(huì)根據(jù)它的參數(shù)來(lái)決定是采用“<”還是“>”。
class compare { private: Enumcomp comp; public: compare(Enumcomp c):comp(c) {}; bool operator () (int num1,int num2) { switch(comp) { case ASC: return num1num2; } } }; 接下來(lái)使用 sort(begin,end,compare(ASC)實(shí)現(xiàn)升序,sort(begin,end,compare(DESC)實(shí)現(xiàn)降序。 主函數(shù)為: int main() { int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout< 3)其實(shí)對(duì)于這么簡(jiǎn)單的任務(wù)(類型支持“<”、“>”等比較運(yùn)算符),完全沒(méi)必要自己寫(xiě)一個(gè)類出來(lái)。標(biāo)準(zhǔn)庫(kù)里已經(jīng)有現(xiàn)成的了,就在functional里,include進(jìn)來(lái)就行了。functional提供了一堆基于模板的比較函數(shù)對(duì)象。它們是(看名字就知道意思了):equal_to
、not_equal_to 、greater 、greater_equal 、less 、less_equal 。對(duì)于這個(gè)問(wèn)題來(lái)說(shuō),greater和less就足夠了,直接拿過(guò)來(lái)用: 升序:sort(begin,end,less
()); 降序:sort(begin,end,greater
()). int _tmain(int argc, _TCHAR* argv[]) { int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout<()); for(i=0;i<20;i++) cout<4)既然有迭代器,如果是string 就可以使用反向迭代器來(lái)完成逆序排列,程序如下:
int main() { string str("cvicses"); string s(str.rbegin(),str.rend()); cout << s <qsort():
原型:
_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*));
解釋: qsort ( 數(shù)組名 ,元素個(gè)數(shù),元素占用的空間(sizeof),比較函數(shù))
比較函數(shù)是一個(gè)自己寫(xiě)的函數(shù) 遵循 int com(const void *a,const void *b) 的格式。
當(dāng)a b關(guān)系為 > < = 時(shí),分別返回正值 負(fù)值 零 (或者相反)。
使用a b 時(shí)要強(qiáng)制轉(zhuǎn)換類型,從void * 轉(zhuǎn)換回應(yīng)有的類型后,進(jìn)行操作。
數(shù)組下標(biāo)從零開(kāi)始,個(gè)數(shù)為N, 下標(biāo)0-(n-1)。實(shí)例:
int compare(const void *a,const void *b)
{
return *(int*)b-*(int*)a;
}int main()
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout< qsort((void *)a,20,sizeof(int),compare);
for(i=0;i<20;i++)
cout< return 0;
}關(guān)于排序函數(shù)sort怎么用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享標(biāo)題:排序函數(shù)sort的原理是什么-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://weahome.cn/article/ddoeog.html