[Scala]二分法查找

需求:定义方法【数组[Int]/列表[Int],x:Int】 ,找到x在数组中的位置 [二分查找] (index,List)

object FindIndex {
  def main(args: Array[String]): Unit = {
    var list = List(1, 3, 9, 2, 6, 4, 7, 5)
    var x = 6
    var result = findIndex(list, x)
    print(result)
  }

  def findIndex(list: List[Int], x: Int): (Int, List[Int]) = {
  //对list列表进行排序
    val list1 = list.sorted
    //定义左索引边界
    var low = 0
    //定义右索引边界
    var high = list1.length - 1

  	//low<=high 则循环
    while (low <= high) {
    //获取中间索引
      var index = (low + high) / 2
      //如果中间值与输入值相等,则直接返回中间索引和排序后的列表
      if (list1(index) == x)
        return (index, list1)
      else if (x > list1(index))
      //如果中间值小于输入的值,则将左索引边界重新赋值为中间值+1
        low = index + 1
      else
        //如果中间值大于输入的值,则将左索引边界重新赋值为中间值+1
        high = index - 1
      
    }
      //如果出现low>high,退出循环,说明输入值在列表中不存在,返回-1和排序后的列表,
    return (-1, list1)
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值