码迷,mamicode.com
首页 > 其他好文 > 详细

1.二分查找

时间:2018-07-23 00:55:30      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:外置   大小   def   二分查找   地址   highlight   存储   存在   直接   

# arr:数组
# value:要查找的值
def bin_search(arr, value):
    # 二分查找指每次查找一半,先找中间值,看看相不相等。
    # 如果相等直接返回,不相等比较大小,如果小的话,说明value在右边一半。如果大的话,说明value在左边一半。
    # 由于python的list是属于元素外置的方式,list存储的是指针,可以通过索引直接计算出偏移量,从而找到元素的地址。
    low = 0  # 查找的初始位置
    high = len(arr) - 1  # 查找的结束位置
    while low <= high:  # 如果初始位置小于等于结束位置,便一直查找。直到不满足条件。
        mid = (low + high) // 2  # 找到中间的值
        if arr[mid] == value:  # 如果相等直接返回
            return f"要查找的值为{value},所在位置的索引为{mid}"
        elif arr[mid] > value:  # 如果arr[mid]>value,说明我们要找的值在左边
            high = mid - 1
        else:
            low = mid + 1  # 否则的话,说明要找的值在右边
    else:
        return f"{value}不存在"


# 通过函数也看的出来,二分查找需要list有序,我们这里是顺序的,即从小到大
arr = range(1000000)
print(bin_search(arr, 500))  # 要查找的值为500,所在位置的索引为500

arr1 = range(0, 100000, 3)
print(bin_search(arr1, 499))  # 499不存在

  

1.二分查找

标签:外置   大小   def   二分查找   地址   highlight   存储   存在   直接   

原文地址:https://www.cnblogs.com/traditional/p/9352278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!