代码:
#include<stdio.h>
#include<stdlib.h>
void exchange(int arr[],int sz)
{
int q = 0;
int p = sz-1;
while(q<p)
{
if(arr[q]%2 ==1)
{
q++;
}
if(arr[p]%2 ==0)
{
p--;
}
if((arr[q]%2 !=1 )&&( arr[p]%2 !=0))
{
arr[q] ^= arr[p];
arr[p] ^= arr[q];
arr[q] ^= arr[p];
}
}
}
int main()
{
int i = 0;
int arr[]= {1,2,3,4,5,4,6,7,8,9};
int sz = sizeof(arr)/sizeof(arr[0]);
exchange(arr,sz);
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
system("pause");
return 0;
}
优化:
void exchange(int *a,int len)
{
int *p = a;
int *q = a + len - 1;
while (q >= p)
{
while (*p % 2 != 0) p++;
while (*q % 2 == 0) q--;
*p ^= *q;
*q ^= *p;
*p ^= *q;
p++;
q++;
}
}
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int len = sizeof(a) / sizeof(a[0]);
exchange(a,len);
return 0;
}