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 }