如何对排序奇数和排序的给定数组进行排序即使在相同的数组中也是如此?

时间:2016-11-08 14:41:10

标签: c++ algorithm c++11

给定的数组是

  

A [] = {} 200,100,25,67,3,56,10,78,7,11

预期输出

  

A [] = {3,7,11,25,67,10,56,78,100,200}

其中前五个数字是按升序排列的奇数,接下来的五个数字是按升序排列的偶数。

如果有人知道算法,请在此处分享。

1 个答案:

答案 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