标签:时间复杂度 二分查找 val while == python bsp search 输出
def linear_search(data_set, value): for i in range(range(data_set)): if data_set[i] == value: return i return
不使用递归的方式:
def binary_search(l,n): low = 0 hight = len(l) while low <= hight: mid = (low + hight) // 2 if l[mid][id] < n: print(l[mid]) low = mid + 1 elif l[mid][id] > n: print(l[mid]) hight = mid - 1 else: return mid
使用递归的方式:
def binary_search(l,aim,start= 0,end=None): if end == None:end = len(l) - 1 if start <= end: # (end - start) // 2 + start 两种方法 mid = (end + start) // 2 #12 18 if l[mid] < aim: return func(l,aim,start = mid + 1,end = end) # [42,43,55,56,66,67,69,72,76,82,83,88] elif l[mid] > aim: return func(l,aim,start = start,end = mid - 1) elif l[mid] == aim: return mid else: return None
要求列表是有序的,所以python中列表的查找,并不是采用的二分查找。
四、练习
LetCode网站题目: 现有一个学员信息列表(按id增序排列),格式为: stu_info = [ {id:1001, "name":"张三", "age":20}, {id:1002, "name":"李四", "age":25}, {id:1004, "name":"王五", "age":23}, {id:1007, "name":"赵六", "age":33} ] 修改二分查找代码,输入学生id,输出该学生在列表中的下标,并输出完整学生信息。
def binary_search(l,n): low = 0 hight = len(l) while low <= hight: mid = (low + hight) // 2 if l[mid][id] < n: print(l[mid]) low = mid + 1 elif l[mid][id] > n: print(l[mid]) hight = mid - 1 else: return mid ret = binary_search(stu_info,1004) print(ret)
标签:时间复杂度 二分查找 val while == python bsp search 输出
原文地址:https://www.cnblogs.com/weihengblog/p/9427070.html