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

利用二分法和牛顿法求平方根首先我们要理解什么是二分法:(一)确定该区间的中间位置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]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间将缩小
摘要由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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值