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。

 

原文地址:https://www.cnblogs.com/forever97/p/3495056.html