二分查找法---scala方式

二分查找法---scala方式


1566996974241

  1. package com.le
  2. import scala.util.control.Breaks._
  3. /** *
  4. *
  5. * @Author : Le
  6. * @CreatDate : 2019/8/28
  7. * **/
  8. object test {
  9. def main(args: Array[String]):Unit= {
  10. val arr= List(1, 9, 8, 10, 2, 3, 6)
  11. val index=8
  12. println(m1(arr,index))
  13. }
  14. //定义一个方法,求这个参数数字在参数列表的位置
  15. def m1(a:List[Int],x:Int):(Int, List[Int])={
  16. //先对列表进行字典排序
  17. val b=a.sorted
  18. //定义左指针
  19. var left=0
  20. //定义右指针
  21. var right=b.length-1
  22. //进行循环
  23. while (left<=right){
  24. //中间指针为每次循环后的左右指针和/2
  25. var mid=(left+right)/2
  26. //如果中间值刚好相等则退出并返回
  27. if (x==b(mid)) return (mid,b)
  28. //如果对比值比中间值大,则将左指针移动到中间指针的右侧+1位置
  29. if (x>b(mid)) left=mid+1
  30. //同理如果对比值比中间值小,则将右指针移动到中间指针的左侧-1位置
  31. if (x<b(mid)) right=mid-1
  32. }
  33. //找不到则返回-1
  34. return (-1,b)
  35. }
  36. }

原文地址:https://www.cnblogs.com/leccoo/p/11426500.html