方法一:
void reverse(int a[], int n)
{
int left = 0;
int right = n - 1;
while(left < right)
{
//从左边开始找第一个偶数
while((left < right) && (a[left] % 2 != 0))
{
left++;
}
//从右边开始找第一个奇数
while((left < right) && (a[right] % 2 == 0))
{
right--;
}
if(left < right)
{
int tmp = a[left];
a[left] = a[right];
a[right] = tmp;
}
}
}
方法二:
void reverse(int* arr,int len)
{
int i = 0;
int j = 0;
int tmp = 0;
for(i=0; i<len; i++)
{
if(0 == arr[i] % 2)
{
for(j=i+1; j<len; j++)
{
if(1 == arr[j]%2)
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
break;
}
}
}
}
}
主函数:
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9};
int i = 0;
reverse(a, sizeof(a)/sizeof(a[0]));
for(i=0; i<sizeof(a)/sizeof(a[0]); i++)
{
printf("%d ",a[i]);
}
return 0;
}