一坨任意整数数组。写一个函数,把数组里的奇数放前面。偶数放后面。
代码如下:时间复杂度为O(n),空间复杂度为O(1)
#include <stdio.h>
inline void swapAB(int& a ,int& b)
{
int t=a;
a=b;
b=t;
}
void solve(int* p,size_t n)
{
int *pf,*pl;
if(n<=1) return;
pf=p;
pl=p+n-1;
while(1)
{
while(*pf%2==1)++pf;
while(*pl%2==0)--pl;
if(pf<pl) swapAB(*pf,*pl);
else break;
}
}
int main(int argc, char **argv)
{
const int ilen=10;
int i=0;
int in[ilen] = {1,2,3,4,5,6,7,8,9,0};
solve(in,ilen);
for(i=0;i<ilen;i++)
{
printf("%d ",in[i]);
}
return 0;
}