STL排序演算法sort

2021-08-22 12:18:26 字數 2347 閱讀 9771

要使用stl中的演算法,需要在程式標頭檔案引入#include

1.對基本型別的陣列從小到大排序: 

sort(陣列名+n1,陣列名+n2);

n1和n2都是int型別的表示式,可以包含變數

如果n1=0,則 + n1可以不寫

將陣列中下標範圍為[n1,n2)的元素從小到大排序。下標為n2的元素不在排序區間內 

2.對元素型別為t的基本型別陣列從大到小排序:

sort(陣列名+n1,陣列名+n2,greater());

3.用自定義的排序規則,對任何型別t的陣列排序

sort(陣列名+n1,陣列名+n2,排序規則結構名());

排序規則結構的定義方式:

struct  排序規則結構名

};

1:

int a = ;  sort(a,a+7); //對整個陣列從小到大排序

int a = ;  sort(a,a+3); // 結果:

int a = ;  sort(a+2,a+5); //結果: 

例2:

int a = ;

sort(a+1,a+4,greater()); // 結果: 

例3:

#include

#include

#include

using namespace std;

struct student ,,, ,}; 

struct studentrule1 {//按姓名從小到大排

bool operator() (const student & s1,const student & s2) {

if( stricmp(s1.name,s2.name) < 0)

return true; 

return false;

struct studentrule2 {//按id從小到大排

bool operator() (const student & s1,const student & s2) {

return s1.id < s2.id;

struct studentrule3 {//按gpa從高到低排

bool operator() (const student & s1,const student & s2) {   return s1.gpa > s2.gpa;

void printstudents(student s,int size){ 

for(int i = 0;i < size;++i)   

cout << "(" << s[i].name << "," << s[i].id <<"," << s[i].gpa << ") " ;  cout << endl;

int main()

int n = sizeof(students) / sizeof(student);  

sort(students,students+n,studentrule1()); //按姓名從小到大排     

printstudents(students,n);    

sort(students,students+n,studentrule2()); //按id從小到大排   

printstudents(students,n);    

sort(students,students+n,studentrule3()); //按gpa從高到低排  

printstudents(students,n);   

return 0;

結果:

(ala,333,3.5) (jack,112,3.4) (mary,102,3.8) (mary,117,3.9) (zero,101,4)

(zero,101,4) (mary,102,3.8) (jack,112,3.4) (mary,117,3.9) (ala,333,3.5)

(zero,101,4) (mary,117,3.9) (mary,102,3.8) (ala,333,3.5) (jack,112,3.4) 

STL(排序演算法sort)

標頭檔案 include 1.對基本型別的陣列從小到大排序 sort 陣列名 n1,陣列名 n2 n1和n2都是int型別的表示式,可以包含變數 如果n1 0,則 n1可以不寫 將陣列中下標範圍為 n1,n2 的元素從小到大排序 如 int a sort a,a 7 對整個陣列從小到大排序 int ...

STL排序演算法sort

sort 陣列名 n1,陣列名 n2 注意排序區間是 n1,n2 左閉右開。預設為從小到大排序,如果想要從大到小排序,需要加引數sort 陣列名 n1,陣列名 n2,greater include includeusing namespace std int main sort a,a 5 for ...

詳細解說 STL 排序 Sort

從效率上看,以下幾種sort演算法的是乙個排序,效率由高到低 耗時由小變大 partion stable partition nth element partial sort sort stable sort 若需對vector,string,deque,或 array容器進行全排序,你可選擇sor...