#include<stdio.h>
#include<stdlib.h>
void reset(int a[],int n)
{
int i=0,j=n-1,tmp=0;
while(i<j)
{
if((a[i]%2==1)&&(a[j]%2==0))
{
i++;
j--;
}
else if((a[i]%2==1)&&(a[j]%2==1))
i++;
else if((a[i]%2==0)&&(a[j]%2==1))
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
else
j--;
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int *a=(int *)malloc(sizeof(int)*n);
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
reset(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}原文:http://blog.csdn.net/zyh920521/article/details/45507147