数据结构:二分查找python(二)

思路:之前我们要循环,不断改变区间来求中间元素位置来实现目标,现在我们使用递归的思想来解决这个

  当数组为空,我们应该返回false,其它情况,进入主要部分

  当中间元素为查找值时,直接返回true

  当中间元素大于查找值时,我们让alist[:n]进入递归

  当中间元素小于查找值时,我们让alist[n+1:]进入递归

代码如下:

#coding:utf-8
#递归的思想

def binary_sort(alist,item):
    if alist==[]:
        return False
    else:
        start=0
        last=len(alist)
        n=(start+last)//2
        if alist[n]==item:
            return True
        elif alist[n]>item:
            return binary_sort(alist[:n],item)
        else:
            return binary_sort(alist[n+1:],item)
        return False
        
        
a=[6,53,61,75,83,96,112,253,960,1006]
print(binary_sort(a,10))
print(binary_sort(a,960))
print(binary_sort(a,53))

  结果:

 

posted @ 2020-05-19 16:06  Roronoa-Zoro  阅读(146)  评论(0编辑  收藏  举报