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