public int[] exchange(int[] nums) { int lo = 0, hi = nums.length-1; while (lo < hi) { while (lo < hi && (nums[lo] & 1) == 1) lo++; while (lo < hi && (nums[hi] & 1) == 0) hi--; if (lo < hi) { exch(nums, lo, hi); lo++; hi--; } } return nums; } // 奇数顺序,偶数顺序保持不变 public int[] exchange(int[] nums) { int even = -1; for (int i = 0; i < nums.length; i++) { if ((nums[i] & 1) == 1) { even = i; break; } } if (even == -1) return nums; for (int i = even+1; i < nums.length; i++) { if ((nums[i] & 1) == 0) { int oddNum = nums[i]; System.arraycopy(nums, even, nums, even+1, i-even); nums[even] = oddNum; even++; } } return nums; } private void exch(int[] nums, int i, int j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; }