特定要求的排序:奇数移动到偶数前面
文章目录
//偶数移动到奇数后面,定义两个指针
//这个要求也可以改成别的,比如正数移到负数前面,只需要重写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;
}