• 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 } 

  • 相关阅读:
    CentOS6下OpenLDAP+PhpLdapAdmin基本安装及主从/主主高可用模式部署记录
    Curl运维命令
    kafka 基础知识梳理及集群环境部署记录
    RocketMQ 简单梳理 及 集群部署笔记
    Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
    Redis+Keepalived高可用环境部署记录
    Centos下Nodejs+npm环境-部署记录
    基于Ping和Telnet/NC的监控脚本案例分析
    linux dig 命令使用方法
    dnsjava usage
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/6960868.html
Copyright © 2020-2023  润新知