//输入一个整数数组,实现一个函数,
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
//所有偶数位于数组的后半部分。
void exchange(int arr[], int size)
{
int left = 0;//left开始维护最左边的指针
int right = size - 1;//right开始维护最右边的指针,数组下标从0开始,所以right=size-1
while (left < right)
{
if (arr[left] % 2 == 1)//如果arr[lefft]为奇数,left指针向右移一位
{
left++;
}
else if (arr[right] % 2 == 0)//如果arr[right]为偶数,right指针向右移一位
{
right--;
}
else//如果arr[left]为偶数,arr[right]为奇数,进行交换
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
}
int main()
{
int arr[] = { 1,3,4,6,7,3,4,2,23,43,5,7 };
int size = sizeof(arr) / sizeof(arr[0]);//算出数组大小
exchange(arr, size);//将数组首地址和数组大小传给函数
int i = 0;
for (i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}