@source_data:数据集 @binary_num:要查找的数 @mid:中间数的键值 def binary_search(source_data,search_num): #传入数据集计算中间数键值 mid = int(len(source_data)/2) #确认数据集的数据个数大于1 if int(len(source_data)) >1: #判断要找的数与中间数比较,如果中间数大于要找的数,要找的数在中间数左边 if source_data[mid] > search_num: # 显示数据的大概位置 print("search_num in left [%s]" % source_data[mid]) #重复判断查找 binary_search(source_data[:mid], search_num) #如果中间数小于要找的数,要找的数在中间数右边 elif source_data[mid] < search_num: #显示数据的大概位置 print("search_num in right [%s]" % source_data[mid]) # 重复判断查找 binary_search(source_data[mid:], search_num) else: # 中间数正好等于要找的数,则打印出来 print("find search_num",source_data[mid]) else: #如果等于1输出提示信息 print("can't find search_num") if __name__== '__main__': data = [1,2,3,4,5,6,7] print(data) binary_search(data,4)
技术让生活更优质!