龙空技术网

在 Python 中实现二分查找(Binary Search)算法

信息科技云课堂 135

前言:

此刻同学们对“python折半查找”大体比较注重,大家都想要知道一些“python折半查找”的相关资讯。那么小编在网摘上汇集了一些对于“python折半查找””的相关资讯,希望咱们能喜欢,小伙伴们快快来学习一下吧!

二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,基于分治算法。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。

二分查找法是最快的搜索算法。二分查找法的思想是分而治之。二分查找法中,列表的元素必须按顺序排列。二分查找法首先将列表的中间元素与搜索值进行比较。如果搜索值与中间元素匹配,则返回其在列表中的位置。如果搜索值小于中间元素,则下一次搜索将在列表的前半部分继续(升序排序)。如果搜索值大于中间元素,则下一次搜索将在列表的后半部分继续。每次比较后,待查找的区间缩小为之前的一半方法1:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]x = int(input("请输入查找的数字:"))left, right = 0, len(lst) - 1while left <= right:    mid = (left + right) // 2    if lst[mid] == x:        print(f"{x}在列表的索引位置是:{mid}。")        break    elif lst[mid] < x:        left = mid + 1    else:        right = mid - 1else:    print(f"列表中没有找到{x}")
方法2:迭代法
def binary_search(arr, target):    left, right = 0, len(arr) - 1    while left <= right:        mid = (left + right) // 2        if arr[mid] == target:            return mid        elif arr[mid] < target:            left = mid + 1        else:            right = mid - 1    return -1lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]x = int(input("请输入查找的数字:"))index = binary_search(lst, x)if index != -1:    print(f"{x}在列表的索引位置是:{index}。")else:    print(f"列表中没有找到{x}")
方法3:递归法
def binary_search(array, x, low, high):    if high >= low:        mid = low + (high - low)//2        if array[mid] == x:            return mid        elif array[mid] > x:            return binary_search(array, x, low, mid-1)        else:            return binary_search(array, x, mid + 1, high)    else:        return -1lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]x = int(input("请输入查找的数字:"))index = binary_search(lst, x, 0, len(lst)-1)if index != -1:    print(f"{x}在列表的索引位置是:{index}。")else:    print(f"列表中没有找到{x}")

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。

标签: #python折半查找 #python递归法折半查找 #折半查找算法代码python #二分法查找数据程序 #二分法查找数据程序是什么