二分查找法---scala方式

package com.leimport 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) }}