剑指Offer-调整数组奇数位于偶数前面

//调整数组顺序,使奇数位于偶数前面
#include <iostream>
#include <stdio.h>
using namespace std;
//方法一,奇数与奇数之间的位置,偶数与偶数之间的位置会发生改变。
//创建两个指针,分别指向数组的首元素和尾元素
void ReorderOddEven_1(int *pData,unsigned int length)
{
    if(pData==NULL||length==0)
        return;
    int *pBegin=pData;//数组指针指向首元素
    int *pEnd=pData+length-1;

    while(pBegin<pEnd)
    {
        //向后移动pBegin,直到遇到偶数
        while(pBegin<pEnd&&(*pBegin&0x1)!=0)
         ++pBegin;
         //向前移动pEnd,直到遇到奇数
         while(pBegin<pEnd&&(*pEnd&0x1)==0)
          --pEnd;

         if(pBegin<pEnd)
         {
             int temp=*pBegin;
             *pBegin=*pEnd;
             *pEnd=temp;
         }
    }
}

你可能感兴趣的:(剑指Offer-调整数组奇数位于偶数前面)