题解 | #整数奇偶排序# 王道机试指南 第二章 排序

整数奇偶排序

https://www.nowcoder.com/practice/bbbbf26601b6402c9abfa88de5833163

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
bool comp(int x, int y) {
    //如果两个数是奇数,按从大到小,降序 return >
    if (x % 2 == 1 && y % 2 == 1)
        return x > y; //大的值在前面
    else if (x % 2 == 0 && y % 2 == 0) //两个数是偶数
        return x < y;
    else //一个奇数一个偶数
        return x % 2 > y %
               2; //奇数在前,偶数在后  很巧妙,为奇数时,x%2==1> 为偶数x%2==0

}
int main() {
    int data[10];
    int i;
    while (cin >> data[0]) { //当第一个输入的数不为EOF时
        for (i = 1; i < 10; i++)
            cin >> data[i]; //输入9个数
        //接下来进行排序
        sort(data, data + 10, comp); //comp自定义
        //输出
        for (i = 0; i < 10; i++)
            cout << data[i] << ' ';
    }
    return 0;
}

习题3.2

整数奇偶排序(北京大学复试上机题)

http://t.cn/E9glPvp

很巧妙的求解思路

在sort的comp函数中施展比较的特性

巧妙利用x%2 与 奇数偶数的性质

参考

https://blog.nowcoder.net/n/71badf5723af42c79a40a0493ee38572?f=comment

全部评论

相关推荐

10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务