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

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

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

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