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

整数奇偶排序

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

全部评论

相关推荐

浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
🎓学历背景:双非土木硕👨‍💻意向职位:AI应用开发大佬们可以帮我看看简历吗,秋招至今0offer
秋招结束再玩瓦:今年科班都不好找哇……你可以试试交叉岗,比如制造业国企的一些开发算法,或者互联网的边缘岗,it技术支持,运维这些
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务