失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python二分查找/折半查找算法详解--(面试常考)

Python二分查找/折半查找算法详解--(面试常考)

时间:2022-06-19 06:02:10

相关推荐

Python二分查找/折半查找算法详解--(面试常考)

/hanhanwanghaha宝藏女孩 欢迎您的关注!

欢迎关注微信公众号:宝藏女孩的成长日记

如有转载,请注明出处(如不注明,盗者必究)

二分查找也称折半查找(Binary Search),这种搜索算法每一次比较都使搜索范围缩小一半,是一种效率较高的查找方法。

概念

是一种在有序数组中查找某一特定元素的查询算法。搜索过程从数组的中间元素开始,如果中间元素与要查找的元素相等,则搜索过程结束;如果查找元素大于或小于中间元素,则在数组大于或小于中间元素的那一半中进行查找,而且跟开始一样从中间元素开始比较。重复以上过程,直到找到满足条件的元素,使查找成功,或直到数组为空为止,此时查找不成功。

要求

必须采用顺序存储结构,且按关键字大小进行有序排列。

代码举例

#coding=utf-8# 二分查找 (递归)# 返回 x 在 lists 中的索引,如果不存在返回Nonedef binarySearch(lists, left, right, x):# 如果右边的值大于左边的值if right >= left:# 取左右两个数的中间值mid = (left + (right - left) // 2)# 若目标元素正好是中间位置,就返回mid,搜索过程结束if lists[mid] == x:return mid# 元素小于中间位置的元素,比较左边的元素,且移动right下标elif lists[mid] > x:return binarySearch(lists, left, mid - 1, x)# 元素大于中间位置的元素,比较右边的元素,移动left下标else:return binarySearch(lists, mid + 1, right, x)else:# 不存在的目标元素的情况就返回Nonereturn# 测试举例数组arr = [1, 2, 3, 4, 5]x = 6# 函数调用result = binarySearch(arr, 0, len(arr) - 1, x)if result != None:print("您输入的元素在数组中的索引为 %d" % result)else:print("您输入的元素不在数组中")

运行结果:

当x=3时;

运行结果

/hanhanwanghaha宝藏女孩 欢迎您的关注!

欢迎关注微信公众号:宝藏女孩的成长日记

如有转载,请注明出处(如不注明,盗者必究)

如果觉得《Python二分查找/折半查找算法详解--(面试常考)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。