题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得所有奇数位于数组的前半部分。所有偶数位于数组的后半部分。
程序代码:
#include <iostream>
void ReOrder(int *pData, int length, bool (*func)(int))
{
if (pData == NULL || length == 0)
{
return;
}
int *pBegin = pData;
int *pEnd = pData + length - 1;
while (pBegin != pEnd)
{
while (pBegin != pEnd && func(*pBegin))
{
pBegin++;
}
while (pBegin != pEnd && !func(*pEnd))
{
pEnd--;
}
if (pBegin != pEnd)
{
int tmp;
tmp = *pBegin;
*pBegin = *pEnd;
*pEnd = tmp;
}
}
}
bool isOdd(int n)
{
return n & 1;
}
void ReorderOddEven(int *pData, int length)
{
ReOrder(pData, length, isOdd);
}
int main()
{
int arr[] = { 1, 4, 3, 6, 8, 7, 9 };
ReorderOddEven(arr, 7);
for (int i = 0; i < 7; i++)
{
std::cout << arr[i] << " ";
}
std::cout << std::endl;
system("pause");
return 0;
}