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。

 

你可能感兴趣的:(sort)