所有代码均通过G++编译器测试,仅为练手纪录。
//面试题14:调整数组顺序使奇数位于偶数前面
//题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
// 使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
//面试题14:调整数组顺序使奇数位于偶数前面
//题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
// 使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
void AdjustArrayOrder(int *pValue,int nSize)
{
if(NULL == pValue || nSize <= 0)
{
return;
}
int nBegPos = 0;
int nEndPos = nSize - 1;
while (nBegPos < nEndPos)
{
while((nBegPos < nEndPos) && (1 == (pValue[nBegPos]%2) ) )
{
++nBegPos;
}
while((nBegPos < nEndPos) && (0 == (pValue[nEndPos]%2) ) )
{
--nEndPos;
}
if (nBegPos < nEndPos)
{
int temp = pValue[nBegPos];
pValue[nBegPos] = pValue[nEndPos];
pValue[nEndPos] = temp;
}
}
}
void TestAdjustArrayOrder()
{
int arrValue[] = {1,5,3,4,2,3,4,5,7,8,6};
int nArrLen = sizeof(arrValue)/sizeof(int);
AdjustArrayOrder(arrValue,nArrLen);
for(int i = 0; i < nArrLen; ++i)
{
LogInfo("value:%d",arrValue[i]);
}
}
ZhaiPillary
2016-12-24