二分查找法---scala方式
二分查找法---scala方式
package com.le
import scala.util.control.Breaks._
/** *
*
* @Author : Le
* @CreatDate : 2019/8/28
* **/
object test {
def main(args: Array[String]):Unit= {
val arr= List(1, 9, 8, 10, 2, 3, 6)
val index=8
println(m1(arr,index))
}
//定义一个方法,求这个参数数字在参数列表的位置
def m1(a:List[Int],x:Int):(Int, List[Int])={
//先对列表进行字典排序
val b=a.sorted
//定义左指针
var left=0
//定义右指针
var right=b.length-1
//进行循环
while (left<=right){
//中间指针为每次循环后的左右指针和/2
var mid=(left+right)/2
//如果中间值刚好相等则退出并返回
if (x==b(mid)) return (mid,b)
//如果对比值比中间值大,则将左指针移动到中间指针的右侧+1位置
if (x>b(mid)) left=mid+1
//同理如果对比值比中间值小,则将右指针移动到中间指针的左侧-1位置
if (x<b(mid)) right=mid-1
}
//找不到则返回-1
return (-1,b)
}
}
漫步在广阔无垠的草原上的感觉是如此的美妙,一个少年的成长故事还在继续.....