Binary Search is one of the fastest searching algorithms, especially when it comes to searching large (sorted) lists.
The main goal of Binary Sear...
For further actions, you may consider blocking this person and/or reporting abuse
Nice explanation and congratulations on presenting an actually correct variant of binary search. 🚀
Since I believe that anything can be improved, no matter how nice it is, here is some feedback:
Issues
list
anditemToFind
should very much be parameters that are passed to the functionparseInt
. It's really not needed and it just causes a performance overhead.(start + end) / 2
isn't ideal either, since with large enough arrays, this can cause some overflowing/rounding. The improved variant isstart + ((end - start ) / 2)
Might be interesting to notereturn -1
isreturn -start
. Then, the negative return value would point at the smallest element that's >= itemToFind. And that's pretty useful when one wants to insert a new element.Thank you so much for your feedback @stefnotch . 😀
I fixed the no-parameters issue but am curious, why do you think that
parseInt
isn't needed here? Aren't we using it to avoid having fractions in the middle index? 🤔I see, I missed that detail!
Although,
parseInt
is not designed for that. It's purpose is to turn a string (text) into a number. If the intention is to chop off the fractional part, thenMath.floor
is the standard function to use.e.g.
start + Math.floor((end - start) / 2)
I like your idea of returning -start.
Great explanation of this kind of search! Nice work, Hajar!
Thank you so much for reading, Andrew. I appreciate it. 🌹
thanks :)
Thank for taking the time to right a legit article instead of all the fluff that so many others produce.
Thank you, Peter. You're so kind. 😊
perfect explanation
Thank you for reading. :)