void oddEven(int *p,unsigned int len,int (*fun)(int))
{
if(p == NULL || len == 0)
return ;
int *pStart = p;
int *pEnd = pStart+len - 1;
while(pStart < pEnd)
{
//从前向后找偶数
while(pStart < pEnd && !fun(*pStart))
pStart++;
//从后向前找奇数
while(pStart < pEnd && fun(*pEnd))
pEnd--;
if(pStart < pEnd)
{
int tmp = *pStart;
*pStart = *pEnd;
*pEnd = tmp;
}
}
}
//写成函数,容易扩展
void isEven(int n)
{
return (n&1) == 0;
}
void reOrder(int *p,unsigned int len)
{
oddEven(p,len,isEven);
}
C语言 调整数组顺序使奇数位于偶数前面
最新推荐文章于 2024-08-15 13:07:02 发布