将一个数组里面的奇数全部排在前面,偶数排在后面
方法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;}}
}