zoukankan      html  css  js  c++  java
  • sort函数的使用

    Sort函数的使用

    sort类函数:

    函数名功能描述
    sort 对给定区间所有元素进行排序
    stable_sort 对给定区间所有元素进行稳定排序
    partial_sort 对给定区间所有元素部分排序
    partial_sort_copy 对给定区间复制并排序
    nth_element 找出给定区间的某个位置对应的元素
    is_sorted 判断一个区间是否已经排好序
    partition 使得符合某个条件的元素放在前面
    stable_partition 相对稳定的使得符合某个条件的元素放在前面

     

     

     

     

     

     

     

     

     

     

     

    需要头文件<algorithm>

    语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认非降序排序。

     

     

    以int为例的基本数据类型的sort使用

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int main()
    {
        int a[5]={1,3,4,2,5};
        sort(a,a+5);
        for(int i=0;i<5;i++)
                cout<<a[i]<<' ';//1 2 3 4 5
        return 0;
     }

     

    functional提供了一堆基于模板的比较函数对象。它们是:equal_to<Type>、not_equal_to<Type>、greater<Type>、greater_equal<Type>、less<Type>、less_equal<Type>。

    • 升序:sort(begin,end,less<data-type>());
    • 降序:sort(begin,end,greater<data-type>()).
    #include<iostream>
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int a[5]={1,3,4,2,5};
        sort(a,a+5);
        for (int i = 0; i < 5; i++)
        {
            cout<<a[i]<<" ";//1 2 3 4 5
        }
        cout<<endl;
        sort(a,a+5,less<int>() );
        for (int i = 0; i < 5; i++)
        {
            cout<<a[i]<<" ";//1 2 3 4 5
        }
        cout<<endl;
        sort(a,a+5,greater<int>() );
        for (int i = 0; i < 5; i++)
        {
            cout<<a[i]<<" ";//5 4 3 2 1
        }

     

    引用数据类型string的使用

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int main()
    {
        string str("hello world");
        sort(str.begin(),str.end());
        cout<<str;//空格dehllloorw
        return 0;
     }

    使用反向迭代器可以完成逆序排序

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int main()
    {
        string str("hello world");
        sort(str.rbegin(),str.rend());
        cout<<str;//wroolllhde空格
        return 0;
     }

     

    字符串间的比较排序

    #include<iostream>
    #include<cstring >
    #include<algorithm>
    using namespace std;
    int main()
    {
        string a[4];
        for(int i=0;i<4;i++)
            getline(cin,a[i]);
        sort(a,a+4);
        for(int i=0;i<4;i++)
            cout<<a[i]<<endl;
        return 0;
    }

     

    以结构体为例的二级排序

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    struct link
    {
        int a,b;
    };
    bool cmp(link x,link y)
    {
        if(x.a==y.a)
            return x.b>y.b;
        return x.a>y.a;
    }
    int main()
    {
        link x[4];
        for(int i=0;i<4;i++)
            cin>>x[i].a>>x[i].b;
        sort(x,x+4,cmp);
        for(int i=0;i<4;i++)
            cout<<x[i].a<<' '<<x[i].b<<endl;
        return 0;
     }

     

    多级排序(二级)

    class Solution {
        #define N 10010
        int bit[N];
    public:
        int get(int x){
            int res=0;
            while (x) res+=x&1,x>>=1;
            return res;
        }
        vector<int> sortByBits(vector<int>& arr) {
            for (auto x:arr) bit[x]=get(x);
            sort(arr.begin(),arr.end(),[&](int x,int y){
                return bit[x]==bit[y]?x<y:bit[x]<bit[y];
            });
            return arr;
        }
    };

    参见:https://www.cnblogs.com/BlairGrowing/p/13459973.html

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13460028.html

  • 相关阅读:
    委托操作控件使用01
    C#读写ini
    List集合的使用小技巧|非常实用首先举例2个集合A,B. List<i
    xiaoqiang
    c#遍历目录及子目录下某类11型的所有的文件
    2015实习生面试记录
    Sliding Window Maximum
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Search Tree Iterator
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/13460028.html
Copyright © 2011-2022 走看看