问题描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路: 这个问题我们可以借鉴冒泡排序的思路,只需要把交换条件更改,只有偶数在奇数前才交换数字,这样可以保证奇数在偶数前面。而冒泡算法是稳定的,这样我们可以保证奇数之间的相对位置保持不变,偶数之间亦然。
代码:
import java.util.Arrays;
import org.junit.Test;
public class ReOrderArray {
public int[] reOrderArray(int[] array) {
boolean flag = false;
for (int i = 0; i < array.length; i++) {
flag = false;
for (int j = 1; j < array.length-i; j++) {
if (array[j-1] % 2 == 0 && array[j] % 2 == 1) {
flag= true;
int temp = array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
if(flag == false)
break;
}
return array;
}
@Test
public void test() {
int []arr = {1,2,3,4,5,6};
System.out.println(Arrays.toString(reOrderArray(arr)));
}
}
输出:
[1, 3, 5, 2, 4, 6]