题解 | #整数奇偶排序# 王道机试指南 第二章 排序
整数奇偶排序
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 | 整数奇偶排序(北京大学复试上机题) | 
很巧妙的求解思路
在sort的comp函数中施展比较的特性
巧妙利用x%2 与 奇数偶数的性质
参考
https://blog.nowcoder.net/n/71badf5723af42c79a40a0493ee38572?f=comment
 投递大连飞创信息技术有限公司等公司10个岗位
投递大连飞创信息技术有限公司等公司10个岗位
 查看6道真题和解析
查看6道真题和解析