给定的数组是
A [] = {} 200,100,25,67,3,56,10,78,7,11
预期输出
A [] = {3,7,11,25,67,10,56,78,100,200}
其中前五个数字是按升序排列的奇数,接下来的五个数字是按升序排列的偶数。
如果有人知道算法,请在此处分享。
答案 0 :(得分:1)
考虑A是std :: vector,你需要为std :: sort提供自定义比较器,表明赔率是" less"然后偶数:
auto odd_even_comparer =[](int a, int b){
if( a % 2 == b % 2 )
return a < b;
else if(a % 2 == 1 && b % 2 == 0 )
return true;
else if(a % 2 == 0 && b % 2 == 1 )
return false;
// just in case
return a<b;
}
然后拨打电话:
std::sort(A.begin(), A.end(), odd_even_comparer);
输出: 3,7,11,25,67,10,56,78,100,200