利用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];
}
}

京公网安备 11010502036488号