C++ STL之排序演算法

來源:互聯網
上載者:User

標籤:

排序演算法和尋找演算法差不多,也涉及到迭代器區間問題,關於該問題的注意事項就不在囉嗦了

一、全部排序sort、stable_sort

sort是一種不穩定排序,使用時需要包含標頭檔algorithm

預設可以傳兩個參數或三個參數。第一個參數是要排序的區間首地址,第二個參數是區間尾地址的下一地址。如果只傳入這兩個地址的話,就按照升序對指定地址區間排序。想要按照降序排列的話,需要傳入第三個函數,第三個函數可以自己寫cmp,也可以直接調用庫函數

greater<data-type>(),使用庫函數的時候要包含標頭檔functional。

總結如下:

#include<algorithm>

#include<functional>

升序:sort(begin,end,less<data-type>());

降序:sort(begin,end,greater<data-type>()).

 1 #include<iostream> 2 #include<algorithm> 3 #include<functional> 4 using namespace std; 5 int main() 6 { 7     int a[9]={454,45564,6,3,5,65,32,53,5}; 8     //升序 9     sort(a,a+9,less<int>());10     cout<<"升序排序結果"<<endl;11     for(int i=0;i<9;i++)12     {13         cout<<a[i]<<endl;14     }15     //降序16     sort(a,a+9,greater<int>());17     cout<<"降序排序結果"<<endl;18     for(int i=0;i<9;i++)19     {20         cout<<a[i]<<endl;21     }22     return 0;23 }

如果忘記了升序或者降序後面的那個方法名稱,也可以自己寫個簡單的

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

sort(a,a+9,cmp);
就是降序

bool cmp(int a,int b)

{

return a<b;

}

sort(a,a+9,cmp);

就是升序

與之對應的有一個stable_sort()用法與sort一樣,是穩定排序。

二、部分排序partial_sort、partial_sort_copy

 1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int main() 5 { 6     int num[10]={3,4,6,7,3,5,2,9,7,8}; 7     for(int i=0;i<10;i++) 8     { 9         cout<<num[i]<<" ";10     }11     cout<<endl;12     //partial_sort13     //void partial_sort(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)14     //選出[_First, _Last)之間的_Mid-_First個數進行排序,放在_First到_Mid位置,剩下的在_Mid到_Last的元素不排序,pred是排序方式15     partial_sort(num,num+3,num+10);16     for(int i=0;i<10;i++)17     {18         cout<<num[i]<<" ";19     }20     cout<<endl;21 22     //partial_sort_copy23     //_RanIt partial_sort_copy(_InIt _First1, _InIt _Last1,_RanIt _First2, _RanIt _Last2, _Pr _Pred)24     int shuzi[10]={3,4,6,7,3,5,2,9,7,8};25     int result1[3];26     int result2[12];27     partial_sort_copy(shuzi,shuzi+10,result1,result1+3);28     for(int i=0;i<10;i++)29     {30         cout<<shuzi[i]<<" ";31     }32     cout<<endl;33     for(int i=0;i<3;i++)34     {35         cout<<result1[i]<<" ";36     }37     cout<<endl;38         39     partial_sort_copy(shuzi,shuzi+10,result2,result2+12);40     for(int i=0;i<10;i++)41     {42         cout<<shuzi[i]<<" ";43     }44     cout<<endl;45     for(int i=0;i<12;i++)46     {47         cout<<result2[i]<<" ";48     }49     cout<<endl;50     return 0;51 }

 

C++ STL之排序演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.