输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。
package com.main;
import java.util.Arrays;
public class Main {
private void adjustPosition(int[] nums) {
int n = nums.length;
if (n < 2) {
return;
}
int i = n - 1;
int j = 0;
int temp = 0;
while (i > j) {
if ((nums[i] & 1) == 0) {//是偶数,继续往左
i--;
continue;
}
if ((nums[j] & 1) == 1) {//是奇数,继续往右
j++;
continue;
}
temp = nums[i];//交换
nums[i] = nums[j];
nums[j] = temp;
i--;//下一个元素
j++;
}
}
public static void main(String[] args) {
int[] nums = new int[]{1, 2, 3, 4, 5, 6};
new Main().adjustPosition(nums);
System.out.println(Arrays.toString(nums));
}
}
//[1, 5, 3, 4, 2, 6]