首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开

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

作者头像
猿人谷
发布2018-01-17 12:07:01
1.6K0
发布2018-01-17 12:07:01
举报
文章被收录于专栏:猿人谷猿人谷

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

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

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

//判断元素的奇偶性 
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;   
}  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-09-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档