zoukankan      html  css  js  c++  java
  • 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 } 

  • 相关阅读:
    Lucene in action 笔记 case study
    关于Restful Web Service的一些理解
    Lucene in action 笔记 analysis篇
    Lucene in action 笔记 index篇
    Lucene in action 笔记 term vector
    Lucene in action 笔记 search篇
    博客园开博记录
    数论(算法概述)
    DIV, IFRAME, Select, Span标签入门
    记一个较困难的SharePoint性能问题的分析和解决
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/6960868.html
Copyright © 2011-2022 走看看