《剣指offer》面接問題21:奇数が偶数の前になるように配列順を調整する(C++実現)
826 ワード
タイトル
整数配列を入力し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置するように、配列内の数値の順序を調整する関数を実現します.
コード#コード#
整数配列を入力し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置するように、配列内の数値の順序を調整する関数を実現します.
コード#コード#
#pragma once
// : , ,
// , 。
/**
*
*
* ,
*/
void reOrder(int* pData, int length, bool (*func)(int))
{
if (pData == nullptr || 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 temp = *pBegin;
*pBegin = *pEnd;
*pEnd = temp;
}
}
}
bool isEven(int n)
{
return (n & 1) == 0;
}
void reOrderOddEven(int* pData, int length)
{
reOrder(pData, length, isEven);
}