输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
i 定义数组长度的循环变量, j 定义剩余数组的比较次数。若连续的【 j 】和【 j+1 】分别是偶数和奇数的话,就交换两者位置。最后奇在前,偶在后。
如:原数组为{2,6,7,1,4,5}
i = 0; j=0:
j=1:{2,7,6,1,4,5}
j=2:{2,7,1,6,4,5}
j=3
j=4:{2,7,1,6,5,4} //第一趟比较下来最末的偶数至于数组最后的位置
i=1;
j=0:{7,2,1,6,5,4}
j=1:{7,1,2,6,5,4}
j=2:
j=3:{7,1,2,5,6,4} //第二趟比较下来倒数位的偶数至于次位
i=2:
j=0:
j=1
j=2:{7,1,5,2,6,4}
i=3:
j=0;
j=1;
i=4:
j=0;
public class Solution {
public void reOrderArray(int[] array)
{
// 趟数
for (int i = 0; i < array.length; i++)
{
// 交换次数
for (int j = 0; j < array.length - 1 - i; j++)
{
if (isEven(array[j]) && !isEven(array[j + 1]))
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
// 判断是否为偶数
boolean isEven(int n)
{
return (n & 1) == 0;
}
public static void main(String[] args)
{
int[] array = { 2, 6, 7, 1, 4, 5 };
Solution s = new Solution();
s.reOrderArray(array);
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + ",");
}
}
}