RosettaCodeData/Task/Binary-search/Scala/binary-search-1.scala

10 lines
332 B
Scala
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
def binarySearch[A <% Ordered[A]](a: IndexedSeq[A], v: A) = {
def recurse(low: Int, high: Int): Option[Int] = (low + high) / 2 match {
case _ if high < low => None
case mid if a(mid) > v => recurse(low, mid - 1)
case mid if a(mid) < v => recurse(mid + 1, high)
case mid => Some(mid)
}
recurse(0, a.size - 1)
}