C/C++ Sort函数简介

今天在准备CCF的时候遇到了一个题目-数字排序问题(题目地址),这个题需要用到sort来进行排序。有时间的读者可以先试着解决这个问题,从解决题目的过程中发现自己对sort函数的掌握程度以便发现不足,这也是笔者走过的路。
以下是笔者初次写的代码。

#include<iostream>
#include<algorithm>//函数头文件
using namespace std;
struct Num
{
    public : int n;
    public : int num;
    public : Num(){num=0;}
};
bool compareByNum(const Num &n1,const Num &n2)
{
    if(n1.num==n2.num)
    {
        return n1.n<n2.n;
    }
    return n1.num>n2.num;
}
int main()
{
    int n;
    cin>>n;
    int a[n];
    int i;
    Num nn[10];
    for(i=0;i<10;i++)
    {
        nn[i].n=i;
    }
    for(i=0;i<n;i++)
    {
        cin>>a[i];
        nn[a[i]].num++;
    }
    sort(nn,nn+10,compareByNum);
}

下面来看sort函数的用法:

  1. 对于基本数据类型(int,double之类)的数组进行排序,其函数表达式:sort(begin,end);//默认升序
    实例:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int  a[10]={5,2,3,1,4,6,9,7,8,0};//对a数组进行排序
    sort(a,a+10);//采用sort函数解决
    for(int i=0;i<10;i++)
    {
        cout<<a[i]<<" ";
    }
}
  1. 对于自定义类型(struct,class类的)的数组进行排序,其函数表达式为:sort(begin,end,cmpByXxx)//这里的cmpByXxx是需要程序员自定义的函数,sort会按照你所给的要求进行排序(ps:是不是很人性化);
    实例:
#include<iostream>
#include<algorithm>
using namespace std;
struct Student
{
    int no;
    int score;
    public : Student(){}
    public : Student(int n,int s)
    {
        no=n;
        score=s;
    }
};
bool cmpByScore(const Student & s1,const Student & s2)
{
    return s1.score>s2.score;//代表排在前面的分数高
}
void put(Student * s,int n)
{
    int i;
    for(i=0;i<3;i++)
    {
        cout<<s[i].no<<" "<<s[i].score<<endl;
    }
}
int main()
{
    Student s[3];
    s[0].no=1;s[0].score=90;
    s[1].no=2;s[1].score=95;
    s[2].no=1;s[2].score=100;
    sort(s,s+3,cmpByScore);
    put(s,3);
}

既然是简介,笔者就只说这些了(其实是由于水平有限☺)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值