// 面试题14_调整数组顺序使奇数位于偶数前面.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
void swap(int *begin,int *end)
{
    int temp;
    temp=*begin;
    *begin=*end;
    *end=temp;
}


void ReorderOddEven(int *pData,unsigned int length)
{
    if(pData==NULL||length==0)
        return;
    int *begin=pData,*end=(pData+length-1);
    while(begin<end)
    {
        while((*begin)%2==1)
            begin++;
        while((*end)%2==0)
            end--;
        if(begin<end)
            swap(begin,end);
    }

}


int _tmain(int argc, _TCHAR* argv[])
{
    int pData[]={1,2,3,4,5,6,7,8,9,10};
    ReorderOddEven(pData,sizeof(pData)/sizeof(int));
    for(int i=0;i<sizeof(pData)/sizeof(int);i++)
    {
        cout<<pData[i]<<" ";
    }
    cout<<endl;
    return 0;
}

思路:1、begin指向第1个位置,end指向最后一个位置;

2、begin找到第一个为偶数的,end找到第一个为奇数的位置;

3、交换

4、若begin>end,重复2;