scala 二分法查找

简介: package algorithm//返回查找到的数据的索引下标object BinarySearch { def main(args: Array[String]): Unit = { val ar...
package algorithm

//返回查找到的数据的索引下标
object BinarySearch  {

  def main(args: Array[String]): Unit = {

    val arr = Array(1, 2, 3, 10, 100, 19999, -1998, 9, 234, 234, 9, 43)
    val index = Binarysearch(arr, 100)
    println("the found value is  " + index)
  }

  def Binarysearch(arr:Array[Int], value:Int):Int={

    var left = 0
    var right = arr.size - 1

    while (left <= right){
      var mid = left + ((right - left)>>1)  // 防止溢出, 并且移位操作更高效

      println(s"left:  $left  right : $right  mid: $mid")
      if(arr(mid)> value){
        right = mid -1
      }else if(arr(mid) < value){
        left = mid +1
      }else{
        return  mid               //注意 添加return, scala中只有最后一行才是作为返回值
      }
    }
    -1
  }
}
相关文章
|
SQL 消息中间件 分布式计算
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
671 0
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
|
2月前
|
分布式计算 Java Scala
spark 与 scala 的对应版本查看、在idea中maven版本不要选择17,弄了好久,换成11就可以啦
spark 与 scala 的对应版本查看、.在idea中maven版本不要选择17,弄了好久,换成11就可以啦
109 2
|
2月前
|
分布式计算 数据处理 Scala
Spark 集群和 Scala 编程语言的关系
Spark 集群和 Scala 编程语言的关系
29 0
|
3月前
|
分布式计算 Java Scala
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python
|
11月前
|
存储 分布式计算 Scala
Spark-RDD 键值对的操作(Scala版)
Spark-RDD 键值对的操作(Scala版)
|
11月前
|
SQL 存储 JSON
人人都懂Spark-SQL基础操作(Scala版)
人人都懂Spark-SQL基础操作(Scala版)
|
11月前
|
JSON 分布式计算 算法
Spark-编程进阶(Scala版)
Spark-编程进阶(Scala版)
|
11月前
|
JSON 分布式计算 Hadoop
Spark-数据读取与保存(Scala版)
Spark-数据读取与保存(Scala版)
|
11月前
|
存储 缓存 分布式计算
Spark RDD编程基础(Scala版)
Spark RDD编程基础(Scala版)