Sha256: a23b6ca32bedc45d00881bc98a7c2413079a60a9308b8aade802bf8f2f234106

Contents?: true

Size: 699 Bytes

Versions: 132

Compression:

Stored size: 699 Bytes

Contents

import scala.annotation.tailrec

object BinarySearch {
  def search[T](seq: Seq[T], value: T)(implicit ord: T => Ordered[T]): Option[Int]
    = searchInternal(seq, value, 0, seq.size - 1)

  @tailrec
  def searchInternal[T](seq: Seq[T], value: T,
                        start: Int, end: Int)(implicit ord: T => Ordered[T]): Option[Int] = {
    if (end < start || start < 0)
      None
    else {
      val middle = Math.floor(0.5 * (start + end)).asInstanceOf[Int]
      val elem = seq(middle)
      if (elem == value)
        Some(middle)
      else if (value < elem)
        searchInternal(seq, value, start, middle - 1)
      else
        searchInternal(seq, value, middle + 1, end)
    }
  }
}

Version data entries

132 entries across 132 versions & 1 rubygems

Version Path
trackler-2.2.1.10 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.9 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.8 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.7 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.6 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.5 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.4 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.3 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.2 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.1 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.1.0 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.0.6 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.0.5 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.0.4 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.0.3 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.0.2 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.0.1 tracks/scala/exercises/binary-search/example.scala
trackler-2.2.0.0 tracks/scala/exercises/binary-search/example.scala
trackler-2.1.0.55 tracks/scala/exercises/binary-search/example.scala
trackler-2.1.0.54 tracks/scala/exercises/binary-search/example.scala