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

void ReorderOddEven(int data[], int n)
{
	if(data == NULL || n < 2) return;
	
	int left  = 0;
	int right = n-1;
	while(left < right)
	{
		while(left < right && data[left]&0x01 ==  1) ++left;
		
		while(left < right && data[right]^0x01 == 0) -- right;
		
		if(left < right){
			int temp = data[left];
			data[left] = data[right];
			data[right] = temp;
			++left;
			--right;
		}
	}
	
}

void Reorder(int data[], int n, bool (*test)(int ))
{
	if( data == NULL || n < 2) return ;
	
	int left = 0;
	int right = n-1;
	
	while(left < right){
		
		while(left < right && test(data[left]) == true) ++left;
		
		while(left < right && test(data[right]) == false) --right;
		
		if(left < right){
			int temp = data[left];
			data[left] = data[right];
			data[right] = temp;
			++left;
			--right;
		}
	}
}

  

posted @ 2013-09-14 11:17  冰点猎手  阅读(155)  评论(0)    收藏  举报