题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路:定义头尾两个指针,利用while条件循环判断,将奇数与偶数交换。
package Function;
public class ReorderOddEven21 {
public static int[] reorderOddEven(int[] array) {
//判断数组是否为空
if (array == null || array.length == 0) {
return null;
}
//头指针
int pBegin = 0;
//尾指针
int pEnd = array.length-1;
while (pBegin < pEnd) {
//将头指针后移,直到为偶数
while (pBegin < pEnd && (array[pBegin] % 2 != 0)) {
pBegin++;
}
//将尾指针前移,直到为奇数
while (pBegin < pEnd && (array[pEnd] % 2 == 0)) {
pEnd--;
}
if (pBegin < pEnd) {
int temp = array[pBegin];
array[pBegin] = array[pEnd];
array[pEnd] = temp;
}
}
return array;
}
public static void printArray(int[] array) {
for (int num : array) {
System.out.print(num+" ");
}
}
public static void main(String[] args) {
int[] array={1,8,2,5,3,6};
printArray(reorderOddEven(array));
}
}