package com.atguigu.sort
/**
* @author wade
* @create 2019-04-08 20:26
*/
object MyBinarySearch {
def main(args: Array[String]): Unit = {
//数组必须是有序的
val arr = Array(1,5,78,100,101,200,300,345,456,1890)
val index: Int = binarySearch(arr,102,0,arr.length-1)
println("下标为:"+index)
}
def binarySearch(arr: Array[Int], key: Int, left: Int, right: Int): Int = {
var from = left
var to = right
var mid = (from + to) / 2
//判断中间下标对应的值和key的对比
if(from <= to){
if (arr(mid) > key) {
to = mid-1
} else if (arr(mid) < key) {
from = mid+1
} else {
//与中间值相同就直接击中 必须加上return
return mid
}
}else{
//如果from>to 了 证明没有符合这个值的坐标,返回坐标,必须加上return
return -1
}
binarySearch(arr,key,from,to)
}
}