python basis of a binary search algorithm day17

# What is the algorithm
method of calculation #: simple and complex computer brain

# 99 * 13 * 13 = 1287 = 100--13
# Find: Find data
# sort:
# Shortest Path

# We are all learning algorithms past
#Learn-based algorithm to create a better algorithm
# Not all things can apply ready-made solution to the
# Sometimes algorithm will use the knowledge learned to solve new problems

# Binary search algorithm must deal with an ordered list
# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66, 67,69,72,76,82,83,88]
# 50000004999998
# code implementation
# Find DEF (L, AIM):
# mid_index = len (L) // 2
# L IF [mid_index] <AIM:
# new_l = L [mid_index +. 1:]
# find (new_l, AIM)
# elif L [mid_index]> AIM:
# new_l = L [: mid_index]
# find (new_l, AIM)
# the else:
# Print ( 'found', mid_index, L [mid_index])
#
# Find (L, 66)

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
# def find(l,aim,start = 0,end = None):
# end = len(l) if end is None else end # end = len(l) 24
# mid_index = (end - start)//2 + start #计算中间值 12 + 0 = 12
# if l[mid_index] < aim: #l[12] < 44 #41 < 44
# find(l,aim,start =mid_index+1,end=end) # find(l,44,start=13,end=24)
# elif l[mid_index] > aim:
# find(l, aim, start=start, end=mid_index-1)
# else:
# print('找到了',mid_index,aim)
#
# def find(l,aim,start = 0,end = None): # l,44,start=13,end=24
# end = len(l) if end is None else end # end = 24
# mid_index = (end - start)//2 + start #计算中间值 24-13/2 = 5 + 13 = 18
# if l[mid_index] < aim: #l[18] < 44 #67 < 44
# find(l,aim,start =mid_index+1,end=end)
# elif l[mid_index] > aim: # 67 > 44
# find(l, aim, start=start, end=mid_index-1) # find(l,44,start=13,end=17)
# else:
# print('找到了',mid_index,aim)
#
# def find(l,aim,start = 0,end = None): # l,44,start=13,end=17
# end = len(l) if end is None else end # end = 17
# mid_index = (end - start)//2 + start #计算中间值 17-13/2 = 2 + 13 = 15
# if l[mid_index] < aim: #l[15] < 44 #55 < 44
# find(l,aim,start =mid_index+1,end=end)
# elif l[mid_index] > aim: # 55 > 44
# find(l, aim, start=start, end=mid_index-1) # find(l,44,start=13,end=14)
# else:
# print('找到了',mid_index,aim)
#
# def find(l,aim,start = 0,end = None): # l,44,start=13,end=14
# end = len(l) if end is None else end # end = 14
# mid_index = (end - start)//2 + start #计算中间值 14-13/2 = 0+ 13 = 13
# if l[mid_index] < aim: #l[13] < 44 #42 < 44
# find(l,aim,start =mid_index+1,end=end) # find(l,44,start=14,end=14)
# elif l[mid_index] > aim: # 42 > 44
# find(l, aim, start=start, end=mid_index-1)
# else:
# print('找到了',mid_index,aim)

def find(l,aim,start = 0,end = None):
end = len(l) if end is None else end
mid_index = (end - start)//2 + start
if start <= end:
if l[mid_index] < aim:
return find(l,aim,start =mid_index+1,end=end)
elif l[mid_index] > aim:
return find(l, aim, start=start, end=mid_index-1)
else:
return mid_index
else:
return '找不到这个值'


= the Find RET (L, 44)
Print (RET)
# Parameters End
# return value
# can not find the words how to do

# l.index()


# 67 occurs twice calling
# 66 occurred several times
# 44 not found


# Age, binary search, read through the menu codes three
# # ask Fibonacci n-th Fibonacci number is the number
# factorial
# 3! 3 * 2 * 1
# Extra credit: Exam additional questions
# recursive

 

Guess you like

Origin www.cnblogs.com/wang-tan/p/11105451.html