输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分
//这里使用了按位与
a&a=1;
a&0=0;
void swap(int *x, int *y)
{
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
void JO_switch(int a[], int sz)
{
int start = 0;
int end = sz - 1;
while (start < end)
{
if (!(a[start] & 1) && (a[end] & 1))//奇偶交换
{
swap(a+start,a+end);
start++,end--;
continue;
}
if ((a[start] & 1))//奇数
{
start++;
}
if (!(a[end] & 1))//偶数
{
end--;
}
}
}
void print(int a[], int sz)
{
int i = 0;
for (i=0; i < sz; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int main()
{
int a[] = { 1,2,3,4,5,6};
int sz = sizeof(a) / sizeof(a[0]);
print(a, sz);
JO_switch(a, sz);
print(a, sz);
system("pause");
return 0;
}