二分法查找

本文详细介绍了二分查找法的概念和实现过程,通过一个猜数字的游戏举例说明了二分法如何在有序数列中高效地找到目标值。二分法在数据查找中具有显著优势,对于长度为n的有序数列,它只需Log2n步即可找到目标,相比于简单的线性查找效率大大提高。此外,还提供了一段Python代码展示了二分查找的实现。
摘要由CSDN通过智能技术生成

1·关键词:有序数列、对半分、取有用的一半

2·我所理解的过程:我们之间玩一个猜数游戏,规定你在1-100 中想一个数字,然后我每次猜一个数字,你根据你所选择的数字对我猜的数字进行评假:只可以说大了或小了。而我每次猜数的方式为取中间,针对你的每一次结果取中间;假如你想的数字是78,那我第一次猜50,你说小了,证明你的数据不在1-50,在51-100中,我在次取中间75,你说小了,所以你的数据不在51-75中,而在76-100中,在以此类推取猜你所想的数值;这就是二分法的处理方式;

3·二分法必须适用于有序数列;

4·一个数列有n个数据,使用简单查找则需要进行n次,使用二分法则只需要Log2 n 步;

5·执行二分法的python代码:元素和桶有关(元素是我们所需要存放的数据)(桶就是数据的载体,他是一直存在的。桶的编号是从零开始的,第一个桶的位置称为#0,第二个桶的位置称为#2,依次类推)

函数binary_search接收受一个有序的数组和一个元素;指定的元素包含在数组中,这个函数将会返回其原来的位置。

low=0
high=len(list)-1
#你每次都是检查中间的元素,如果不是偶数,min=(low+high)/2;而python则会自动mid向下圆整;
guss=list[mid]
if guess<item
low=mid+1
#如果你猜的数据大了,则改成high;完整的代码如下;

defbinary_search(list,item)
low = 0
high = len(list)-1
while low <=high
mid=(low + high)
guess = list[mid]
if guess == item
return mid
if guess >item
high = mid -1
else:
low = mid +1
return None

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值