publicint(int[] nums, int k){ if (nums == null) return0; int begin = 0, end = nums.length - 1; while (true) { int position = partition(nums, begin, end); if (position == k - 1) return nums[position]; elseif (position < k - 1) { begin = position + 1; } else end = position - 1; } }
publicintpartition(int[] nums, int begin, int end){ int pivot = nums[begin]; int left = begin + 1, right = end; while (left <= right) { while (left <= right && nums[left] >= pivot) ++left; while (left <= right && nums[right] <= pivot) --right; if (left <= right) swap(nums, left, right); } swap(nums, begin, right); return right; }
publicvoidswap(int[] nums, int i, int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }
近期评论