美文网首页
二分法查找

二分法查找

作者: Jason_Fight | 来源:发表于2022-06-29 10:56 被阅读0次

二分查找

一个从小到大排列的数组 li, 设定一个值 val, 找出这个值在数组中的位置, 如果没有找到, 返回 -1;

思路:

    1. 设定两个下标值,
    • left: 数组的第一个值: 0,
    • right: 数组的最后一个值: 数组的长度-1
    1. 找到数组中间位置mid, 将中间位置的值, 与待查找的值相比较
    • mid 等于 left 加 right, 除以2 然后取整
    1. 如果中间的值,与待查找的值相同, 则mid就是目标值
    1. 如果中间位置的值 > 待查找的值, 说明中间位置往后的值, 都不符合要求
    • 此时right = mid - 1
    1. 如果中间位置的值 < 待查找的值, 说明中间位置往前的值, 都不符合要求
    • 此时 left = mid + 1
  • 循环2-5, 如果出现 left > right 的情况出现, 则说明没有找到对应的值

代码实现---python

def binary_search(li, val):
  left = 0
  right = len(li) - 1
  while left <= right:
    mid = (left + right) // 2
    if li[mid] == val:
      return mid
    elif li[mid] > val: 
      right = mid - 1
    else: 
      left = mid + 1
  else:
    return -1

代码实现---js

function binary_search(li, val){
  let left = 0;
  let right = li.length - 1;
  while (left <= right) {
    let mid = Math.floor((left + right) /2)
    if (li[mid] === val) {
      return mid
    } else if( li[mid] > val) {
      right = mid - 1
    } else {
      left = mid + 1
    }
  }
  return -1
}

相关文章

  • 二分法查找

    二分法基本查找 二分法遍历查找

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 数据结构-递归

    二分法查找

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 二分查找

    以二分法来提升查找效率 二分法查找到key的合适位置 put get delete 二分查找的查找操作为O(log...

  • 算法和排序

    1、线性查找 2、二分法查找 3、冒泡排序

  • 查找算法

    查找算法 顺序查找法 时间复杂度:O(n) 二分法查找 二分法查找适用于有顺序的序列 时间复杂度:O(n) 核心思...

  • 算法图解1-2/11

    原书作者 Aditya Bhargava 1 算法简介 1.1 二分法查找 二分法查找,正是猜数字游戏的玩法:A...

  • 前端面试之算法二分法

    使用二分法的前提是,目标数组的元素必须是有序排列的,所以二分法属于有序查找算法 二分法又称为“折半查找”,从数组的...

网友评论

      本文标题:二分法查找

      本文链接:https://www.haomeiwen.com/subject/vtsfbrtx.html