int partition(int[] nums, int left, int right) { int pivot = nums[left]; int hi = right, lo = left; while (lo < hi) { while (lo < hi && nums[hi] >= pivot) { hi--; } while (lo < hi && nums[lo] <= pivot) { lo++; } swap(nums, lo, hi); } swap(nums, lo, left); return lo; } public void swap(int[] nums, int i, int j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; }