二分法查找

2022-06-29  本文已影响0人  Jason_Fight

二分查找

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

思路:

代码实现---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
}

上一篇下一篇

猜你喜欢

热点阅读