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