利用二分法查找目标值(python)

这篇博客介绍了如何利用二分法在Python中查找目标值。通过解释二分法的工作原理,阐述了在有序数据集中使用二分法的高效性,并通过一个示例展示了在有序序列中查找目标值的过程。此外,还提到二分法不仅可以用于查找,还可以应用于求根和其他优化问题。
摘要由CSDN通过智能技术生成

利用二分法和牛顿法求平方根
首先我们要理解什么是二分法:
(一)确定该区间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]b.array[k]<T 类似上面查找区间为array[k+1,……,high]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间将缩小一半,递归查找即可—来自百度释义。
(二)个人理解为:当你查找的值是在一个有序的数据集中时,运用二分法会非常高效,利用对半分原则,会使数据集,每次减少一半。例如:在有序集:[2,8,9,12,13,47]中查找13,已知有6个数据,对应下标为0,1,2,3,4,5,low=0,high=5对半分后的中间数据为mid=(high-1+low)/2,下标2对应的数据为9,9<13,此时更新low=2,high不变,mid=(2+4)/2=3,下标3对应的数据为12,12<13,更新low=3,mid=(3+4)/2=3.5,mid向上四舍五入为4,下标4对应的数据为13,13=13,则找到。停止迭代。

import math
import random
import time
import numpy as np
#随机生成有序数列

data=random.sample(range(1,100000),30000)#随机生成30000个不重复的数字
data=sorted(data)#进行排序
target=np.random.choice(data)#从有序序列中随机选取一个要查找的值
def erfenfa(target):
	i=0 #用于控制迭代
	j=0 #用于计算迭代多少次,找到目标
	low=0
	mid=0 #当中间数重复说明查找的值不在有序序列中,控制是否找到目标
	high=int(len(data))-1
	s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值