您的位置:首页 > 其它

将一个数组里面的奇数全部排在前面,偶数排在后面

2017-01-18 12:54 615 查看
将一个数组里面的奇数全部排在前面,偶数排在后面

方法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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法
相关文章推荐