问题:调整数组顺序使奇数位于偶数前面
(1)输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
(2)考虑设计一个模式解决同类问题。
void swap(int &a, int &b)
{
int c = a;
a = b;
b = c;
}
bool iseven(int integer)
{
return integer % 2;
}
void movearray(int iarray[], int start,int end,int length ,bool (*func)(int))
{
if (start<0 || end>(length + start) || length < 0)
return;
while (start < end)
{
while (start < end && func(iarray[start]))
start++;
while (start < end && !func(iarray[end]))
end--;
if (start < end)
swap(iarray[start], iarray[end]);
}
}
int main()
{
int test[10] = { 1, 18, 6, 24, 23, 10, 17, 8, 19 ,25};
movearray(test, 0, 9, 10, iseven);
for (int i = 0; i < 10; i++)
cout <<test[i]<<"\t" ;
}