[数组] 将数组中奇数放在偶数的前面

将数组中奇数放在偶数的前面,且奇数和奇数之间,偶数和偶数之间相对顺序不变。

思路:
1. 先找到第一个偶数
2. 在找到连续偶数区
3. 每遇到一个奇数则偶数区整体向右移动一个位置。

bool func (int a)
{
     return a%2;
}
void reOrderArray(vector<int> &a, bool (*func) (int)) {
   int i = 0, j = 0;
   int length = a.size();
   while(j < length)
   {
        if(func(a[i]))
       //if(a[i]%2 == 1)
       {
           j++;
           i++;
       }else{
          while(!func(a[i]))
           //while(a[j]%2 == 0)
           {
                j++;
           }
           if(j < length)
           {
               int temp = a[j];

               int k = j;

               while(k > i)
               {
                   a[k] = a[k-1];
                   k--;
               }
               a[i] = temp;

               i++;
           }

       }
   }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容