文章目录

//偶数移动到奇数后面,定义两个指针
//这个要求也可以改成别的,比如正数移到负数前面,只需要重写isodd()即可

#include <iostream>
using namespace std;

bool isodd(int n){
    return n&0x01;
}
void ReorderOddEven(int *m,int length){
    if(m==NULL||length<=0)
        return;
    int *pBegin=m;
    int *pEnd=m+length-1;
    while(pBegin<pEnd){
        //向后移动pBegin直到指向偶数
        while(pBegin<pEnd && isodd(*pBegin))
            pBegin++;
        //向前移动EnD,直到指向奇数
        while(pBegin<pEnd && !isodd(*pEnd))
            pEnd--;
        if(pBegin<pEnd){
            swap(*pBegin,*pEnd);
        }
    }
    for(int i=0;i<length;i++)
        cout<<m[i]<<" ";
}

int main()
{
    int a[]={1,3,5,2,4};
    ReorderOddEven(a,5);
    return 0;
}
文章目录