(items, left, right, i)
| 20 | } |
| 21 | |
| 22 | function RandomizedSelect(items, left, right, i) { |
| 23 | if (left === right) return items[left] |
| 24 | |
| 25 | const pivotIndex = RandomizedPartition(items, left, right) |
| 26 | const k = pivotIndex - left + 1 |
| 27 | |
| 28 | if (i === k) return items[pivotIndex] |
| 29 | if (i < k) return RandomizedSelect(items, left, pivotIndex - 1, i) |
| 30 | |
| 31 | return RandomizedSelect(items, pivotIndex + 1, right, i - k) |
| 32 | } |
| 33 | |
| 34 | function RandomizedPartition(items, left, right) { |
| 35 | const rand = getRandomInt(left, right) |
no test coverage detected