比较函数区分为四种情况

  • 奇奇
  • 偶偶
  • 奇偶
  • 偶奇
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

bool Compare(int x, int y){
    if( x%2 == 1 && y%2==1){
        return y<x;//都是奇数,从大到小
    }else if(x%2==0 && y%2 == 0){
        return x<y;//都是偶数,从小到大
    }else if(x%2 == 0 && y%2 == 1){
        return false;//前偶后奇,不符合要求
    }else{
        return true;//前奇后偶
    }
    /*最后两句判断可以合为一句
        return x%2 > y%2;
    */
}

int main(){
    
    int arr[10];
    while(cin >> arr[0]){
        for(int i =1 ;i <10 ; i++)
            cin >> arr[i];
        
        sort(arr , arr +10, Compare);
        for(int i = 0;i<10 ; i++)
            printf("%d ",arr[i]);
        printf("\n");
    }
    return 0;
}