1、打开Python开发工具IDLE,新建‘search.py’编写代码如下:list1 = [1,6,3,7,2,0]list1.sort()print (list1)
2、F5运行程序,list1被正确排序,写这个的目的是说明二分法查找必须前提是一个有序的列表,如果一开始无序首先要排序,当数据量大的时候,快速排序是一个很好的选择,再进行二分法查找。Shell中打印内容如下:[0, 1, 2, 3, 6, 7]
3、接下来定义我们的二分法查找函数,也是用递归的思想,递归就一定有结束条件。代码如下:def search(li,item): mid = len(li)//2 if item == li[mid]: return True elif item > li[mid]: return search(li[mid+1:],item) else: return search(li[:mid],item)
4、递归结束条件可以有两种写法:第一种if len(li)==1: #li长度等于1,只比较这个列表元素与要查找到值 return li[0]==item完整代码多唉捋胝:def search(li,item): if len(li)==1: return li[0]==item mid = len(li)//2 if item == li[mid]: return True elif item > li[mid]: return search(li[mid+1:],item) else: return search(li[:mid],item)
5、第二种if len(li)==0: #li长度等于0,全部查找结束还是没有这个值 return False完整代码:def search(li,item): if len(li)==0: return False mid = len(li)//2 if item == li[mid]: return True elif item > li[mid]: return search(li[mid+1:],item) else: return search(li[:mid],item)
6、为程序添加main方法,完整代码如下:def search(li,item): if len(li)==0: retur荏鱿胫协n False mid = len(li)//2 if item == li[mid]: return True elif item > li[mid]: return search(li[mid+1:],item) else: return search(li[:mid],item)if __name__ == '__main__': list1 = [8,7,2,9] list1.sort() print (search(list1,1)) print (search(list1,2))
7、F5运行程序,正确打印出二分法查找结果FalseTrue