愺様愺様

python 二分法查找

愺様·2023-03-16 11:19·77 次阅读

python 二分法查找

二分查找(搜索)是一种在有序列表中查找某一特定元素的搜索算法。

二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

Copy
# 二分法查找排序 # 要求,返回x再arr中的索引,如果不存在返回-1 def binary_search(arr, l, r, x): if r > l and x in arr: # 基本判断,右面的位置大于左面的位置 mid = int(l + (r - l) / 2) if arr[mid] == x: # 元素正好中间的位置 return mid elif arr[mid] > x: # 查找的元素小于中间的元素的值 return binary_search(arr, l, mid+1, x) else: # 查找的元素大于中间的元素的值 return binary_search(arr, mid, r, x) else: return -1 # 不存在
Copy
array = [1, 3, 4, 6, 7, 8, 9, 11, 15, 17, 19, 21, 22, 25, 29, 33, 38, 69,99,107] #函数递归 #定义一个函数,给三个形参:低位值,高位值,查找值 def BinarySearch(low,height,findNum): #计算出中位数 middle = (low+height)//2 #如果中位数小于查找值,则锁定后半段 if findNum >array[middle]: #重置低位数 low = middle +1 #如果中位数大于查找值,则锁定前半段 elif findNum<array[middle]: #重置高位值 height = middle - 1 else: #找到该值并返回 return '该值下标为:%s,值为:%s'%(middle,array[middle]) #没有找到则调用自身继续查找 return BinarySearch(low,height,findNum) print(BinarySearch(array[0],len(array)-1,19))
字符串内置count的写法
Copy
def function_count(_str, _t): flag = 0 for _i in _str: if _i == _t: flag += 1 return flag print(function_count('asdasadsffdgtrrytrytryrtytr', 't'))
posted @   愺様  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
· 易语言 —— 开山篇
历史上的今天:
2021-03-16 python进程,线程,协程详解
点击右上角即可分享
微信分享提示