概述
本篇文章给大家带来了关于python的相关知识,其中主要整理了二分查找算法的相关问题,包括了算法描述、算法分析、算法思路等等内容,下面一起来看一下,希望对大家有帮助。
推荐学习:python视频教程
1. 算法描述
2. 算法分析
3. 算法思路
4. 代码实现
纯算法实现
实现代码:
arr_list = [5, 7, 11, 22, 27, 33, 39, 52, 58]# 需要查找的数字seek_number = 11# 保存一共查找了几次count = 0# 列表左侧索引left = 0# 列表右侧索引right = len(arr_list) - 1# 当左侧索引小于等于右侧索引时while left <= right:
# 取中间的索引位置
middle = (left + right) // 2
# 查找次数进行累加
count += 1
# 如果查找的数字大于中间位置的数字时
if seek_number > arr_list[middle]:
# 左侧索引为中间位置索引+1
left = middle + 1
# 如果查找的数字小于中间位置的数字时
elif seek_number < arr_list[middle]:
# 右侧索引为中间位置索引-1
right = middle - 1
# 如果等于中间索引数据
else:
print('数字:%s找到了,索引值为:%s' % (seek_number, middle))
breakelse:
print("数字%s 没有找到" % seek_number)print("一共用了:%s次查找" % count)
登录后复制
运行结果:
递归法实现
实现代码:
arr_list = [5, 7, 11, 22, 27, 33, 39, 52, 58]def binary_search(seek_number, left, right):
if left <= right:
middle = (left + right) // 2
if seek_number < arr_list[middle]:
right = middle - 1
elif seek_number > arr_list[middle]:
left = middle + 1
else:
return middle # 进行递归调用
return binary_search(seek_number, left, right)
# 当左侧索引大于右侧索引时,说明没有找到
else:
return -1# 查找的数字seek_number = 11# 列表左侧索引left = 0# 列表右侧索引right = len(arr_list) - 1print("查找的数字:%s,索引为:%s" % (seek_number, binary_search(seek_number, left, right)))
登录后复制
运行结果:
推荐学习:python视频教程
以上就是Python详细解析之二分查找算法的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是壮观衬衫为你收集整理的Python详细解析之二分查找算法的全部内容,希望文章能够帮你解决Python详细解析之二分查找算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复