| 29 | }; |
| 30 | |
| 31 | const quickSelect = (points, target, left, right) => { |
| 32 | const mid = getMid(points, left, right); |
| 33 | |
| 34 | const isTarget = mid === target - 1; |
| 35 | if (isTarget) return; |
| 36 | |
| 37 | const isTargetGreater = mid < target - 1; |
| 38 | if (isTargetGreater) quickSelect(points, target, mid + 1, right); |
| 39 | |
| 40 | const isTargetLess = target - 1 < mid; |
| 41 | if (isTargetLess) quickSelect(points, target, left, mid - 1); |
| 42 | }; |
| 43 | |
| 44 | const swap = (points, left, right) => |
| 45 | ([points[left], points[right]] = [points[right], points[left]]); |