//将数组中的奇数放在前一部分,偶数放在后一部分
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
void swap(int *x,int *y)
{
assert(x);
assert(y);
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
void show(int *arr,int len)
{
int i = 0;
assert(arr);
for (i = 0; i < len; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void even_odd_switch(int *arr,int len)
{
int left = 0;
int right = len - 1;
assert(arr);
assert(len > 0);
while (left < right)
{
while ((left < right) && (arr[left] & 1))//find even number
{
left++;
}
while ((left < right) && (!(arr[right] & 1)))//find odd number
{
right--;
}
if (left < right)
{
swap(arr+left,arr+right);
left++,right--;
}
}
}
int main()
{
int arr[]= {4300,78,45,3,8,45,798,65};
show(arr,sizeof(arr)/sizeof(int));
even_odd_switch(arr,sizeof(arr)/sizeof(int));
show(arr,sizeof(arr)/sizeof(int));
system("pause");
return 0;
}