[计算机学习]Python 二分法

二分法的思想

二分查找的前提是对象是有序数据。以下内容摘自Pythontip.com 网站。

扫描二维码可以了解更多Python课程。

 

left = 0
right = size of array       # 数组的大小

while (left + 1 < right)
  mid = (left + right) / 2          # 中间mid下标

  if (array[mid] == target)         # 检查已找到
    return mid
  else if (array[mid] < target)  
    continue search in right side   # 在 右边区间搜索
  else  
    continue search in left side    # 在 左边区间搜索

if (array[left] == target)          # 循环退出后进行判断
  return left

return -1

  

笔记1

因此,如果一个问题即便输入不是数组,但隐藏了某种单调性,也可以使用二分算法尝试解决。

笔记2 今天尝试编写一段二分法,返回目标值索引,无则返回-1

def binarySearch(nums,target):
    left=0
    right=len(nums)
    while left+1<right:
        mid=(left+right)//2
        if nums[mid]==target:
            return mid
        if nums[mid]<target:
            left=mid
        if nums[mid]>target:
            right=mid
    return -1
    
nums=[1,2,3,4,6,7,9,11]
target=9
print(binarySearch(nums,target))

 

posted @ 2023-10-30 11:04  viphhs  阅读(14)  评论(0编辑  收藏  举报