/****************************************************************************************
*题目:调整数组顺序使奇数位于偶数之前
* 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
*时间:2015年8月30日08:28:12
*文件:Reorder.java
*作者:cutter_point
****************************************************************************************/
package bishi.Offer50.y2015.m08.d30;
import java.util.Random;
import org.junit.*;
public class Reorder
{
/**
* 是偶数
* @param n
* @return
*/
public boolean isEvenNumber(int n)
{
return (n & 1) == 0;
}
/**
* 判断是否是奇数
* @param num
* @return
*/
public boolean isOdd(int num)
{
if(num == 0)
return false;
if(num % 2 == 0)
{
return false;
}//if,对2进行取余剩下0的话,说明是偶数
else
{
return true;
}//else
}
public int[] reorder(int numbers[])
{
int start = 0;
int end = numbers.length - 1;
while(start < end)
{
while(start < end && !isEvenNumber(numbers[start]))
{
++start;
}//while
while(end > start && isEvenNumber(numbers[end]))
{
--end;
}//while
if(start < end)
{
int temp = numbers[start];
numbers[start] = numbers[end];
numbers[end] = temp;
}
}//while
return numbers;
}
public static int[] Test(int n)
{
Random rand = new Random();
int numbers[] = new int[n];
for(int i = 0; i < n; ++i)
numbers[i] = rand.nextInt(10001);
return numbers;
}
@Test
public void Test1()
{
int n = 20;
int numbers[] = Test(n);
Reorder r = new Reorder();
numbers = r.reorder(numbers);
for(int i = 0; i < n; ++i)
{
System.out.print(numbers[i] + "\t");
}//for
}
}