zoukankan      html  css  js  c++  java
  • C++之sort函数

          C++中的sort函数可以直接完美地取代Pas中十多行的快排代码,在这里,总结一下sort函数的用法:

    首先是不加参数的情况:

    #include<cstdio>
    #include<algorithm> 
    using namespace std;
    int main()
    {
        int n,a[10000];
        scanf("%d",&n);
        for (int i=0; i<n; i++) scanf("%d",&a[i]);
        sort(a,a+n);
        for (int i=0; i<n; i++) printf("%d ",a[i]);
        return 0;
    }

           排序的结果是从小到大的,那么如果需要从大到小的话,就要用上参数了:

    #include<cstdio>
    #include<algorithm> 
    using namespace std;
    bool cmp(int a,int b) {return a>b;};
    int main()
    {
        int n,a[10000];
        scanf("%d",&n);
        for (int i=0; i<n; i++) scanf("%d",&a[i]);
        sort(a,a+n,cmp);
        for (int i=0; i<n; i++) printf("%d ",a[i]);
        return 0;
    }

           而且,这个函数还可以实现和快排一样的功能,比方说区间排序,只要将sort的前两位稍作修改就可以了。

            还有就是关于有参数的排序,其实方法也是相同的,就将HDU 1234作为例子,贴上代码:

    #include<iostream>
    #include<algorithm> 
    #include<cstring> 
    using namespace std;
    struct node
    {
        string name,begin,end;
    }a[1000];
    int cmp1(node a,node b) { return a.begin<b.begin;}
    int cmp2(node a,node b) { return a.end>b.end;}
    int main()
    {
        int n,m,i;
        cin>>n;
        while(n--)
        {
            cin>>m;
            for(i=0;i<m;i++)cin>>a[i].name>>a[i].begin>>a[i].end;
            sort(a,a+m,cmp1);
            cout<<a[0].name<<' ';
            sort(a,a+m,cmp2);
            cout<<a[0].name<<endl;
        }
        return 0;
    }

    需要注意的是要开算法库和namespace。

     

  • 相关阅读:
    美的书,献给所有追求美的人
    《WCF揭秘》:欢迎大家来找我的茬(有奖)!
    这个寒冬,如何让我们的身价翻倍?
    微软中文论坛周年Party掠影
    ASP.NET 3.5之屠龙刀——《ASP.NET高级程序设计(第2版)》
    Red Hat Linux指南
    一部孟宪会推荐的C#图解教程
    左菜单js效果
    分享图标
    谷歌hack
  • 原文地址:https://www.cnblogs.com/forever97/p/3495056.html
Copyright © 2011-2022 走看看