将一个数组里面的奇数全部排在前面,偶数排在后面
方法1:使用数组。
void paixu(int dest[], int n, int src[])
{
int i = 0, m = n-1, k = 0;
if (0 >= n)
{
return ;
}
for (i = 0; i < n; i++)
{
if (0 != (src[i] % 2))///奇数
{
dest[k] = src[i];
k ++;
}
else
{
dest[m] = src[i];
m --;
}
}
方法2:使用链表,只是写了部分主要的代码,仅做参考
bool isEven(int n)//判断偶数
{
return (0 == n&1);
}
void Odd-Even(int *p, int len)
{
Odd-Even-EX(p, len, isEven);
}
void Odd-Even-EX(int *p, int len, bool (*func)(int))
{
if ((NULL == p) || (0 >= len))
{
return ;
}
int *pBegin = p;
int *pEnd = p + len - 1;
while (pBegin < pEnd)
{
while ((pBegin < pEnd) && !func(*pBegin))
{
pBegin++;
}
while ((pBegin < pEnd) && func(*pEnd))
{
pEnd--;
}
if (pBegin < pEnd)
{
int tmp = *pBegin;
*pBegin = *pEnd;
*pEnd = tmp;
}
}
}