算法题:奇数在前 偶数在后,相对顺序保持不变

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:调整数组顺序使奇数位于偶数前面

c语言分段排序 整型数组,偶数在前,奇数在后,从小到大

面试题21:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

《剑指Offer》题目:调整数组顺序使奇数位于偶数前面