public class OddEvenSequence21 {
public static void main(String[] args) {
int[] arr = {1, 2, 5, 6, 4, 3, 8, 0};
adjust(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
private static int[] adjust(int[] arr) {
int i = 0, j = arr.length - 1;
while (i < j) {
while (i < j && !isEven(arr[j]))
j--;
while (i < j && isEven(arr[i]))
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
public static boolean isEven(int n) {
return (n & 1) == 1;
}
}
解释:双指针思想,i在前,j在后,i遇到第一个偶数,j遇到第一个奇数时,交换;