python包含某个数字_python编程练习---有序数组中,快速查找是否包含指定数字,并返回其下标...
生活小問題,1-100猜數游戲:游戲管理員默認寫下一個數字,讓用戶來猜,管理員會根據用戶猜的數字,來回答大了、小了提示,如何快速找到該數,假定指定數為70
第一次:猜50(折半),管理員:小了,那范圍變成51-100
第二次:猜75(折半),管理員:大了,那范圍變成51-74
第三次:猜62(折半),管理員:小了,那范圍變成63-74
第四次:猜68(折半),管理員:小了,那范圍變成69-74
第五次:猜71(折半),管理員:大了,那范圍變成69-70
第六次:猜69,管理員小了---》為70
假如不通過折半的形式來猜,每次隨機猜,最多需要100次,才能猜到對應的數,也就是需要做到全部遍歷,時間復雜度為O(n)
如果通過折半的形式來猜,可以很快猜到指定數字。
所以對于一個有序數列,最快的查找方式,就是二分查找(折半查找),時間復雜度為O(logn)
以下以一個從小到大排序的數組舉例,目標值為target,找出nums是否包含target
def findTarget(target, nums):
smaller, biger = 0, len(nums)-1 #初始化最小、最大下標
while smaller <= biger: #循環條件
mid = int((smaller+biger)/2) #二分坐標
if target > nums[mid]: #目標值大于二分位置的數
smaller = mid + 1 #最小的坐標賦值為二分位置坐標+1
elif target < nums[mid]: #目標值小于于二分位置的數
biger = mid -1 #最大的坐標賦值為二分位置坐標-1
else:
return mid
return None
總結
以上是生活随笔為你收集整理的python包含某个数字_python编程练习---有序数组中,快速查找是否包含指定数字,并返回其下标...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 羊车门问题python_python编程
- 下一篇: vue中webpack默认配置_Vue-