publicvoid(int[] A){ int n = A.length; int positive = 0; int begin = 0, end = n - 1; for (int i : A) if (i > 0) positive += 1; while (begin <= end) { while (begin <= end && A[begin] < 0) ++begin; while (begin <= end && A[end] > 0) --end; if (begin <= end) swap(A, begin, end); }
int negative = n - positive; begin = 1; end = n - 2; if (negative > positive) { swap(A, 1, n - 1); begin += 2; end = n - 3; } elseif (negative < positive) { swap(A, 0, n - 2); begin = 2; end = n - 4; } while (begin + 1 <= end) { swap(A, begin, end); begin += 2; end -= 2; } }
publicvoidswap(int[] nums, int i, int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }
近期评论