算法题:奇数在前 偶数在后,相对顺序保持不变
Posted Panda_cv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法题:奇数在前 偶数在后,相对顺序保持不变相关的知识,希望对你有一定的参考价值。
奇数在前 偶数在后,相对顺序保持不变
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
以上是关于算法题:奇数在前 偶数在后,相对顺序保持不变的主要内容,如果未能解决你的问题,请参考以下文章
用数组编写:将一整数数列按奇数在前、偶数在后的顺序重新排放,并要求奇偶数两部分分别有序
剑指Offer-代码的完整性面试题21:调整数组顺序使奇数位于偶数前面
面试题21:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。