现在的位置: 首页 > 综合 > 正文

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

2013年10月18日 ⁄ 综合 ⁄ 共 810字 ⁄ 字号 评论关闭

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

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

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

//判断元素的奇偶性
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)
{
	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;
}

抱歉!评论已关闭.