(int[] array, int left, int right, int rank)
| 96 | } |
| 97 | |
| 98 | public static int rank(int[] array, int left, int right, int rank) { |
| 99 | int pivot = array[randomIntInRange(left, right)]; |
| 100 | int leftEnd = partition(array, left, right, pivot); // returns end of left partition |
| 101 | int leftSize = leftEnd - left + 1; |
| 102 | if (leftSize == rank + 1) { |
| 103 | return max(array, left, leftEnd); |
| 104 | } else if (rank < leftSize) { |
| 105 | return rank(array, left, leftEnd, rank); |
| 106 | } else { |
| 107 | return rank(array, leftEnd + 1, right, rank - leftSize); |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | |
| 112 | public static void main(String[] args) { |
no test coverage detected