奇数在前 偶数在后,相对顺序保持不变
1. 题目:奇数在前 偶数在后,相对顺序保持不变
2. 解决思路:
step: 1 首先找到数组中的第一个奇数放在A[0]
step: 2 之后从该位置的后面一个位置开始查找奇数
3. 源码
#include <stdio.h>
void lmf(int A[], int n)
{
int i, j, temp, lastOdd;
for (i = 0; i < n; i++) //找到数组中的第一个奇数放在A[0]
{
if (A[i] & 1)
{
temp = A[i];
for (j = i;j > 0; j--)
{
A[j] = A[j - 1];
}
A[0] = temp;
lastOdd = i; //之后从lastOdd + 1位置开始查找奇数
break;
}
}
for (i = lastOdd + 1, lastOdd = 0; i < n; i++)
{
if (A[i] & 1)
{
temp = A[i];
for (j = i; j > lastOdd + 1; j--) //依次向前移动
{
A[j] = A[j - 1];
}
A[++lastOdd] = temp;
}
}
}
int main(void)
{
int A[] = {6, 4, 3, 8, 10, 11, 12, 9};
int i, n = 8;
lmf(A, n);
for (i = 0;i < n; i++)
{
printf("%d ", A[i]);
}
printf("\n");
return 0;
}
参考资料:https://blog.csdn.net/bxyill/article/details/8644301