题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位予数组的后半部分。
题目解析:维护两个下标first和end,first初始指向数组首位置,end初始指向数组末位置,first只能向后走,end只能向前走,比较first和end指向的数据,如果first指向的是偶数,end指向的是奇数,则互换数据。直到两个下标相遇。
public static void reOrderArray(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
int first = 0;
int end = arr.length - 1;
while (first < end) {
while (first < end && arr[first] % 2 != 0) {
first++;
}
while (first < end && arr[end] % 2 == 0) {
end--;
}
int temp;
temp = arr[first];
arr[first] = arr[end];
arr[end] = temp;
}
}