徐静882 2021-03-26 16:26 采纳率: 0%
浏览 26

信息奥赛1183用sort解决问题

bool cmp(Man x, Man y)
{
    if(x.age>=60 && y.age>=60) 
    {
        if(x.age==y.age) return (x.order<y.order);
        else return (x.age>y.age);
    }
    else if(x.age<60 && y.age<60)  return (x.order<y.order);
    else if(x.age>=60 && y.age<60) return x.age>y.age;
    else if(x.age<60 && y.age>=60) return x.age<y.age;
}

sort函数这样写的,输出结果很怪异。

如果把最后两行改为

else if(x.age>=60 && y.age<60) return true;
else if(x.age<60 && y.age>=60) return false;

就对啦  !!!!

为什么?有谁能帮解解惑

  • 写回答

2条回答 默认 最新

  • CSDN专家-孙老师 2021-03-27 02:17
    关注

    代码有点问题,倒数第2行:

    else if(x.age<60 && y.age>=60) return x.age<y.age;

    应该改为:

    else if(x.age<60 && y.age>=60) return x.age>y.age;

    因为年龄是从大到小进行排序,即降序排列。

    对于sort函数来说,compare的用法如下。

    bool cmp(int a,int b)
    {
        return a<b;   //升序排列,如果改为return a>b,则为降序
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 mysql中时间处理问题
  • ¥20 讲解此音频放大电路原理及关键部分
  • ¥15 rtsp 转 m3u8 执行后卡在Decoding VUI
  • ¥20 微信小程序转发链接问题,已禁止转发仍能转发的场景
  • ¥15 关于#硬件架构#的问题:根据开片的IC来判断是哪一款
  • ¥15 matlab simulink
  • ¥15 rtos搭建sip协议开发包
  • ¥100 TM4C1290NCPDT 在线调试
  • ¥15 window系统获取某进程打开的文件路径
  • ¥15 bootstrap 表格不对齐,不对齐