调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。

还是利用两个量从两边扫....代码如下:

//调整数组顺序使奇数位于偶数前面
#include<iostream>
using namespace std;
void make_order(int data[],int len){
	if(len<=0 || data==NULL)
		return;
	else{
		int begin=0,end=len-1;
		while(begin!=end){
			if((data[begin]&1)!=0){         //&优先级低于!=
				begin++;
				continue;
			}
			if((data[end]&1)==0){
				end--;
				continue;
			}
			int temp=data[begin];
			data[begin]=data[end];
			data[end]=temp;
		}
	}

}

int main(void){
	int a[]={3,4,5,6,7,8,9,10,1,2};
	for(int i=0;i<=9;i++)
		cout<<a[i]<<" ";
	cout<<endl;
	make_order(a,10);
	for(int i=0;i<=9;i++)
		cout<<a[i]<<" ";
	cout<<endl;
	system("pause");
	return 0;
}

posted @ 2011-03-14 15:39  akawhy  阅读(1715)  评论(0编辑  收藏  举报