将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开

时间:2022-04-22
本文章向大家介绍将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开?

需要调整元素的顺序。先判断数组中的一个元素的奇偶性,如为奇数就往后移。

如何判断一个元素的奇偶性?

//判断元素的奇偶性 
bool isEven(int data)  
{  
 return((data & 1) == 0 ? true : false);  
}  

测试如下:

#include<stdio.h> 
 
//判断元素的奇偶性 
bool isEven(int data)  
{  
 return((data & 1) == 0 ? true : false);  
}  
 
int main()  
{  
 int i = 3;  
 if(isEven(i))  
    {  
        printf("i is even");  
    }  
 else 
        printf("i is not odd");  
 
 return 0;  
}  

实现代码如下:

#include<iostream>   
using namespace std;   
   
//判断元素的奇偶性   
bool isEven(int data)   
{   
    return((data & 1) == 0 ? true : false);   
}   
   
void reOrder(int *data , int len)   
{ 
	if(data == NULL || len == 0)
		return;

    int *left = data;   
    int *right = data + len - 1;   
    int temp = 0;   
    while(left < right)   
    {   
        if(!isEven(*left))  //如果左边为奇数   
        {   
            left++;   
            continue;   
        }   
   
        if(isEven(*right)) //如果右边为偶数   
        {   
            right--;   
            continue;   
        }   
   
        temp = *left;   
        *left = *right;   
        *right = temp;   
   
        left++;   
        right--;   
    }   
}   
   
int main()   
{   
    int data[] = {2 , 5 , 4 , 9 , 6 , 4};   
    int len = sizeof(data)/sizeof(int);   
    reOrder(data , len);   
    for(int i = 0 ; i < len ; i++)   
    {   
        cout<<data[i]<<" ";   
    }   
    cout<<endl;   
   
    system("pause");   
    return 0;   
}