/*
调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中
所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中
所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
*/
#include <stdio.h>
#include <windows.h>
#pragma warning (disable:4996)
void oddIsBefore(int b[], int len)
{
for (int i = 0; i <= len;)//对数组进行遍历
{
while (b[i] % 2 != 0)//如果b[i]的值是奇数,就移动到下一个值
{
i++;
}
if (i >= len) //因为上面的while循环里有i++,故i可能会大于等于len
{
break;
}
if (b[i] % 2 == 0)//偶数
{
while (b[len] % 2 == 0)//如果b[len]的值是偶数,就移动到前一个值
{
len--;
}
if (i >= len) //因为上面的while循环里有len--,故i可能会大于等于len
{
break;
}
if (b[len] % 2 != 0)//奇数
{
int temp = b[i];
b[i] = b[len];
b[len] = temp;
}
}
}
}
int main()
{
int a[10] = { 2, 3, 1, 5, 4, 6, 8, 7, 9, 0 };
int len = sizeof(a) / sizeof(a[0]) - 1;//求数组的长度
oddIsBefore(a, len);
for (int i = 0; i <= len; i++)//输出数组
{
printf("%d ", a[i]);
}
system("pause");
return 0;
}