• 查找算法(二分查找)


    1.二分查找介绍

    #描述二分查找:
        二分查找针对有序的数据集合,要从有序集合中,找出目标值。每次都把目标值,与区间的中间元素进行对比,将待查找的区间缩小为之前的一半,直到查到要查找的目标元素。或者区间缩小为0.
        
    #二分查找实现注意事项:
        1.循环退出条件
            low<=high
            
        2.mid取值
            普通方式:mid=(low+high)/2
            改进方式:mid=low+(high-low)/2
            终极方式:mid=low+((high-low)>>1)
            
        3.low和high更新
            low=mid+1
            high=mid-1
            
     #二分查找应用场景局限性:
         1.二分查找依赖顺序表结构(数组)
         2.二分查找针对的是有序数据
         3.数据量太小,不适合使用二分查找

    2.代码实现

    package cn.anan.util
    
    /**
      * 学习二分查找
      */
    object BinarySearch {
    
      def main(args: Array[String]): Unit = {
        // 定义数组,该数组是有序排列
        val arr = Array(0,1,2,3,4,5,6,7,8,9,10)
    
        // 定义目标数字:7
        val goal=7
    
        // 查找目标数字在数组中的索引位置
        // 定义开始查找位置,结束位置,折半位置索引
        var start=0
        var end=arr.length-1
        var mid=0
    
        // 循环处理
        while(start<=end){
          // 计算中间位置
          mid=(start+end)/2
    
          // 进行比较
          if(goal==arr(mid)){
            println("目标数字goal:"+goal+"在数组中的索引位置:"+mid)
            return
          }
    
          // 如果目标数字小于,数组中间位置的数字
          if(goal<arr(mid)){
            // 结束位置等于mid-1
            end=mid-1
          }
    
          // 如果目标数字大于,数组中间位置数字
          if(goal>arr(mid)){
            // 开始位置等于mid+1
            start=mid+1
          }
        }
      }
    
    }
  • 相关阅读:
    MediaRecorder.AudioSource参数
    putty连接服务器
    支持库
    ImageView
    .net下MD5算法和加盐
    SqlHelper文件复习
    .net下连接数据库
    Windows Server 2003 R2 64位简体中文版下载
    gacutil.exe 注册assembly
    Sharepoint Powershell
  • 原文地址:https://www.cnblogs.com/itall/p/11210642.html
Copyright © 2020-2023  润新知