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

简介: 将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开? 需要调整元素的顺序。先判断数组中的一个元素的奇偶性,如为奇数就往后移。 如何判断一个元素的奇偶性? [cpp] view plaincopy //判断元素的奇偶性   bool isEven(int data...

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

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

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

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


测试如下:

  1. #include<stdio.h>  
  2.   
  3. //判断元素的奇偶性  
  4. bool isEven(int data)  
  5. {  
  6.     return((data & 1) == 0 ? true : false);  
  7. }  
  8.   
  9. int main()  
  10. {  
  11.     int i = 3;  
  12.     if(isEven(i))  
  13.     {  
  14.         printf("i is even");  
  15.     }  
  16.     else  
  17.         printf("i is not odd");  
  18.   
  19.     return 0;  
  20. }  


实现代码如下:

#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;   
}  

 

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
2月前
|
算法
顺序表应用4-2:元素位置互换之逆置算法(数据改进)
顺序表应用4-2:元素位置互换之逆置算法(数据改进)
剑指offer_数组---调整数组顺序使奇数位于偶数前面
剑指offer_数组---调整数组顺序使奇数位于偶数前面
33 0
剑指offer 20. 调整数组顺序使奇数位于偶数前面
剑指offer 20. 调整数组顺序使奇数位于偶数前面
42 0
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
117 0
|
Java
Java 题目1:定义一个包含10个元素的数组,对其进行赋值,使每个元素的值等于其下标,然后输出;最后将这个数组倒置(即首尾交换)后输出。
题目:定义一个包含10个元素的数组,对其进行赋值,使每个元素的值等于其下标,然后输出;最后将这个数组倒置(即首尾交换)后输出。
304 0
(第11列)C语言练习:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。五步带你解决。
(第11列)C语言练习:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。五步带你解决。
(第11列)C语言练习:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。五步带你解决。
|
C语言 UED
[解题报告]【第29题】给定一个 n 个元素的数组, 删除数组第一个位置上的数,然后再输出整个数组
[解题报告]【第29题】给定一个 n 个元素的数组, 删除数组第一个位置上的数,然后再输出整个数组
面试 6:调整数组顺序使奇数位于偶数前面
今天给大家带来的是 《剑指 Offer》习题:调整数组顺序使奇数位于偶数前面,纯 Java 实现希望大家多加思考。 面试题:输入一个整型数组,实现一个函数来调整该数组中的数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分,希望时间复杂度尽量小。
2368 0
[剑指offer] 调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
1097 0
将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n
下面是使用a数组本身完成: package 数组元素k位右移; /** * 数组向又移动k位。 0
1206 0