日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sort()函数

發(fā)布時間:2024/10/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sort()函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

用于C++中,對給定區(qū)間所有元素進行排序。頭文件是

#include <algorithm> using namespace std

sort函數(shù)見下表:

函數(shù)名功能描述
sort對給定區(qū)間所有元素進行排序
stable_sort對給定區(qū)間所有元素進行穩(wěn)定排序
partial_sort對給定區(qū)間所有元素部分排序
partial_sort_copy對給定區(qū)間復制并排序
nth_element找出給定區(qū)間的某個位置對應(yīng)的元素
is_sorted判斷一個區(qū)間是否已經(jīng)排好序
partition使得符合某個條件的元素放在前面
stable_partition

相對穩(wěn)定的使得符合某個條件的元素放在前面

sort函數(shù)的用法(C++排序庫函數(shù)的調(diào)用)

對數(shù)組進行排序,在c++中有庫函數(shù)幫我們實現(xiàn),這們就不需要我們自己來編程進行排序了。

(一)為什么要用c++標準庫里的排序函數(shù)

Sort()函數(shù)是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的冒泡排序和選擇排序所帶來的執(zhí)行效率不高的問題!因為它使用的排序方法是類似于快排的方法,時間復雜度為n*log2(n),執(zhí)行效率較高!

(二)c++標準庫里的排序函數(shù)的使用方法

I)Sort函數(shù)包含在頭文件為#include<algorithm>的c++標準庫中,調(diào)用標準庫里的排序方法可以不必知道其內(nèi)部是如何實現(xiàn)的,只要出現(xiàn)我們想要的結(jié)果即可!

II)Sort函數(shù)有三個參數(shù):

(1)第一個是要排序的數(shù)組的起始地址。

(2)第二個是結(jié)束的地址(最后一位要排序的地址的下一地址)

(3)第三個參數(shù)是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個參數(shù),此時默認的排序方法是從小到大排序。

Sort函數(shù)使用模板:

Sort(start,end,排序方法)

下面就具體使用sort()函數(shù)結(jié)合對數(shù)組里的十個數(shù)進行排序做一個說明!

例一:sort函數(shù)沒有第三個參數(shù),實現(xiàn)的是從小到大

#include<iostream>#include<algorithm>using namespace std;int main(){int a[10]={9,6,3,8,5,2,7,4,1,0};for(int i=0;i<10;i++)cout<<a[i]<<endl;sort(a,a+11);for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;}

例二

通過上面的例子,會產(chǎn)生疑問:要實現(xiàn)從大到小的排序腫么辦?

這就如前文所說需要在sort()函數(shù)里的第三個參數(shù)里做文章了,告訴程序我要從大到小排序!

需要加入一個比較函數(shù)compare(),此函數(shù)的實現(xiàn)過程是這樣的

bool compare(int a,int b){return a>b;}

這就是告訴程序要實現(xiàn)從大到小的排序的方法!

#include<iostream>#include<algorithm>using namespace std;bool compare(int a,int b){return a>b;}int main(){int a[10]={9,6,3,8,5,2,7,4,1,0};for(int i=0;i<10;i++)cout<<a[i]<<endl;sort(a,a+10,compare);//在這里就不需要對compare函數(shù)傳入?yún)?shù)了,//這是規(guī)則for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;}假設(shè)自己定義了一個結(jié)構(gòu)體nodestruct node{int a;int b;double c;}有一個node類型的數(shù)組node arr[100],想對它進行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b還相同,就按c降序排列。就可以寫這樣一個比較函數(shù):以下是代碼片段:bool cmp(node x,node y){if(x.a!=y.a) return x.a<y.a;if(x.b!=y.b) return x.b>y.b;return x.c>y.c;}

?

cmp函數(shù)進行二級排序:

?

bool comp( time a,time b) {if(a.t<b.t)return true;else if(a.t>b.t)return false;elseif(a.cost<b.cost)return true;?return false; }


此時結(jié)構(gòu)體先是根據(jù)t進行升序排序 ,后按照cost進行升序排序

?

總結(jié)

以上是生活随笔為你收集整理的sort()函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。