2、二分查找与递归函数结合

# 用代码写的计算方式。
# 二分查找是最简单的算法,比较经典的算法。
#1,数字序列,有序,不重复。

l1 = [1, 3, 5, 7, 8, 10, 11] def binary_search(li,aim,start=0,end=None): # 第一次:[1, 3, 5, 7, 8, 10, 11] aim 6,start 0,end 7 # 第二次:[1, 3, 5, 7, 8, 10, 11] aim 6 start:0,end:3 # 第三次:[1, 3, 5, 7, 8, 10, 11] aim 6 start:2,end:3 # 第四次:[1, 3, 5, 7, 8, 10, 11] aim 6 start:3,end:3 # 第五次:[1, 3, 5, 7, 8, 10, 11] aim 6 start:3,end:3 end = len(li) if end is None else end mid_index = (end - start) // 2 + start # 第一次 mid 3 第二次:mid 1 第三次:mid:2 第四次:mid:3 if start < end: if aim > li[mid_index]: return binary_search(li, aim, start=mid_index+1, end=end) # 第二次:[1, 3, 5, 7, 8, 10, 11] aim 6 start: 2 end:3 # 第三次:[1, 3, 5, 7, 8, 10, 11] aim 6 start: 3 end:3 elif aim < li[mid_index]: return binary_search(li, aim, start=start, end = mid_index) # 第一次:[1, 3, 5, 7, 8, 10, 11] aim 6 start:0,end:3 # 第四次:[1, 3, 5, 7, 8, 10, 11] aim 6 start:3,end:3 elif aim == li[mid_index]: return mid_index else: return None # print(binary_search(l1,3)) print(binary_search(l1,12))

 

posted @ 2018-05-19 20:44  龙的传人123  阅读(71)  评论(0)    收藏  举报