In page 152 of the Elements of Programming Interviews in Python, there is an algorithm of binary search by Jon Bentley. The function is named as bsearch
. Line 4 of the algorithm is written as M = (L + U) // 2
. But after the algorithm, when discussing the overflow issue of the algorithm, The line is written as M = (L + U) / 2
. The correct version of the code is written as M = L + (U - L) / 2
. Is /
the right operator to use here?
In Python 3, for an array with odd length the expression will return a fraction for M. As M is the index of the array it can’t be a fraction. The //
operator feels like the right one. Can anyone confirm this?