Commit 5fe59a2d by BellCodeEditor

auto save

parent b250abfe
Showing with 46 additions and 2 deletions
# 使用二分查找法,找出9和20在列表里面的索引 # 使用二分查找法,找出9和20在列表里面的索引
num_list = [1, 3, 5, 8, 11, 15, 17, 18, 20, 21] bingo_num=20 #要查找的数字是20
\ No newline at end of file num_list = [1, 3, 5, 8, 11, 15, 17, 18, 20, 21]
low=0 #最低索引是0,告诉计算机0号是1
high=len(num_list)-1 #告诉计算机最高的索引是什么
#当最低价格索引小于最高价格索引的时候
while low<=high:
mid=(low+high)//2 #最高加最低除以2,取中间索引,并且是取整数
guess_num=num_list[mid] #告诉计算机要猜的数值
if guess_num==bingo_num:
print("找到他了,他在列表里的索引是:",mid)
break
elif guess_num<bingo_num:#当要找的数字小于bingo_num的时候,最低的就变成中间值-1
low=mid-1
elif guess_num>bingo_num:#当要找的数字大于bingo_num的时候,最高的就变成中间值-1
high=mid-1
import random #导入随机模块
alist=[]
for i in range(1,101):
alist.append(i)
num=random.choice(alist)
#请完善二分查找法函数binary_search(),查找出num在列表list里的索引位置
def binary_search(alist,num):
low=0 #最低索引是0,告诉计算机0号是1
high=len(num_list)-1 #告诉计算机最高的索引是什么
while low<=high:
mid=(low+high)//2 #最高加最低除以2,取中间索引,并且是取整数
guess_num=num_list[mid] #告诉计算机要猜的数值
if guess==num:
print("找到他了,他在列表里的索引是:",mid)
break
elif guess<num:#当要找的数字小于bingo_num的时候,最低的就变成中间值-1
low=mid-1
else:#当要找的数字大于bingo_num的时候,最高的就变成中间值-1
high=mid-1
return None
result=binary_search(alist,num)
print("老师给的数字是:",num)
print("他在列表里的索引是:",result)#列表从1开始,但是索引是从0开始的,所以少1
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment