利用sort的cmp实现一次性排序

a2、b2分别表示a、b的奇偶,奇数为1,偶数为0。

当a与b奇偶不同时,由于偶数为0,所以谁小谁就是偶数,将其放在左侧。

否则比大小,将较小的数放在左侧。

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        vector<int> v(n);
        for(int i=0;i<n;i++) cin>>v[i];
        sort(v.begin(),v.end(),[](int a,int b) -> bool {
            int a2=a%2;
            int b2=b%2;
            if(a2!=b2) return a2<b2;
            return a<b;
        });
        for(int i=0;i<n;i++) cout<<v[i]<<" \n"[i==n-1];
    }
}