high block
low block (holds min)
4
5
6
7
0
1
2
[0][1][2][3][4][5][6]
lo
▲
hi
▲
Binary search on the rotation
▸1lo = 0, hi = n − 12while lo < hi:3 mid = lo + (hi − lo) / 24 if arr[mid] > arr[hi]: // cliff is to the right5 lo = mid + 16 else: // min at mid or left7 hi = mid8return arr[lo]
state
- lo0
- hi6