数据结构:二分查找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))
结果: