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

简介: 将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开? 需要调整元素的顺序。先判断数组中的一个元素的奇偶性,如为奇数就往后移。 如何判断一个元素的奇偶性? [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
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
【剑指offer】-调整数组顺序使奇数位于偶数前面-13/67
【剑指offer】-调整数组顺序使奇数位于偶数前面-13/67
|
20天前
查找数组中最小的元素
【10月更文挑战第30天】查找数组中最小的元素。
31 5
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
|
6月前
|
Python C++ Java
C/C++每日一练(20230405) 数组元素循环右移、输出字符图形、移除链表元素
C/C++每日一练(20230405) 数组元素循环右移、输出字符图形、移除链表元素
43 0
C/C++每日一练(20230405) 数组元素循环右移、输出字符图形、移除链表元素
剑指offer_数组---调整数组顺序使奇数位于偶数前面
剑指offer_数组---调整数组顺序使奇数位于偶数前面
55 0
剑指offer 20. 调整数组顺序使奇数位于偶数前面
剑指offer 20. 调整数组顺序使奇数位于偶数前面
55 0
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
134 0
|
Java
Java 题目1:定义一个包含10个元素的数组,对其进行赋值,使每个元素的值等于其下标,然后输出;最后将这个数组倒置(即首尾交换)后输出。
题目:定义一个包含10个元素的数组,对其进行赋值,使每个元素的值等于其下标,然后输出;最后将这个数组倒置(即首尾交换)后输出。
386 0
(第11列)C语言练习:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。五步带你解决。
(第11列)C语言练习:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。五步带你解决。
(第11列)C语言练习:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。五步带你解决。
|
C语言 UED
[解题报告]【第29题】给定一个 n 个元素的数组, 删除数组第一个位置上的数,然后再输出整个数组
[解题报告]【第29题】给定一个 n 个元素的数组, 删除数组第一个位置上的数,然后再输出整个数组
下一篇
无影云桌面