C++排序

C++排序

一、心得

有多个数据的,无脑排个序,会使问题好想很多

sort(数组起始指针,数组尾指针,排序规则);

二、排序详细

1、所需头文件:

<algorithm>

2、排序方法:

sort(数组起始指针,数组尾指针,排序规则);

数组起始指针,数组尾指针是左闭右开

排序规则可以省略,也可以用系统的,也可以自己写

3、例子:

int a[]={9,2,4,5,10,7,30};

sort(a,a+7);

这是默认的对数组从小到大排列

三、代码及结果

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <string>
 4 using namespace std;
 5 
 6 //结构体排序一
 7 //按姓名从小到大排序,姓名一样,按年龄从小到大排序 
 8 struct student{
 9     string name;//姓名 
10     int age;//年龄 
11 }; 
12 int comp(const student &s1,const student &s2){//自己定义的排序规则 
13     if(s1.name==s2.name){
14         return s1.age<s2.age;
15     }
16     else{
17         return s1.name<s2.name;
18     }
19 } 
20 //结构体排序二
21 //按姓名从小到大排序,姓名一样,按年龄从小到大排序 
22 struct student2{
23     string name;//姓名 
24     int age;//年龄 
25     bool operator < (const student2 & s2) const {//符号重载 
26         if(name==s2.name){
27             return age<s2.age;
28         }
29         else{
30             return name<s2.name;
31         }
32     }
33 }; 
34 int main(){
35     //普通数组排序  
36     int a[]={9,2,4,5,10,7,30};
37     sort(a,a+7);//省略掉排序规则的形式,默认从小到大 
38     sort(a,a+7,less<int>());//用系统的排序规则,从小到大 
39     sort(a,a+7,greater<int>());//用系统的排序规则,从大到小 
40     for(int i=0;i<7;i++){
41         cout<<a[i]<<" ";
42     }
43     cout<<endl; 
44     //结构体数组排序一 
45     student s[100];
46     s[0].name="zhangsan";s[0].age=18;
47     s[1].name="zhangsan";s[1].age=19;
48     s[2].name="lisi";s[2].age=20;
49     sort(s,s+3,comp);//左闭右开,所以是对s[0]到s[2]排序 
50     for(int i=0;i<3;i++){
51         cout<<s[i].name<<" "<<s[i].age<<endl;
52     }
53     //结构体数组排序二:符合重载
54     student2 s2[100]; 
55     s2[0].name="zhangsan";s2[0].age=18;
56     s2[1].name="zhangsan";s2[1].age=19;
57     s2[2].name="lisi";s2[2].age=20;
58     sort(s2,s2+3);//左闭右开,所以是对s[0]到s[2]排序 
59     for(int i=0;i<3;i++){
60         cout<<s2[i].name<<" "<<s2[i].age<<endl;
61     }
62     
63     
64     return 0;
65 } 

原文地址:https://www.cnblogs.com/Renyi-Fan/p/6960868.html