调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
void MoveNum(int arr[], int sz)
{
int* left = arr;
int* right = arr + sz - 1;
int tmp = 0;
while (left < right)
{
if ((left < right) && ((*left) % 2 != 0))//得到了奇数的位置
{
left++;
}
if ((left < right) && ((*right) % 2 == 0))//得到了偶数的位置
{
right--;
}
if (left < right)//交换奇数与偶数位置元素
{
tmp = *left;
*left = *right;
*right = tmp;
}
}
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int sz = sizeof(arr) / sizeof(arr[0]);
MoveNum(arr, sz);
for (int i = 0; i < sz; ++i)
{
printf("%d ", arr[i]);
}
return 0;
}