测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A48047. 随机生成的 10 个在[1,100)范围内整数存入列表; 输入一个待查找的整数 k, 运用二分法在列表中查找 k, 根据查找状态输出对应的结果, 请将程序补充完整。from random import randintdef b(s,v): top=0 last=len(s) while _①_ mid=(top+last)//2 if v==s[mid]: return mid elif v>s…

填空题 中等

题目描述

随机生成的 10 个在[1,100)范围内整数存入列表; 输入一个待查找的整数 k, 运用二分法

在列表中查找 k, 根据查找状态输出对应的结果, 请将程序补充完整。

from random import randint

def b(s,v):

  top=0

  last=len(s)

  while _①_

    mid=(top+last)//2

    if v==s[mid]:

      return mid

    elif v>s[mid]:

      ②_

    elif v<s[mid]:

      last=mid-1

  return None

s=[randint(1,100) for i in range(10)]

s.sort()

print(s)

k=int(input())

ans=b(s,k)

if ③_

  print('找到, 下标是: ',ans)

else:

  print('没有找到这个数! ')

运行结果 1:

[13, 25, 27, 41, 52, 66, 67, 69, 72, 75]

72

找到, 下标是: 8

运行结果 2:

[9, 15, 16, 19, 27, 31, 43, 64, 84, 93]

20

没有找到这个数!

参考答案

from random import randint def b(s,v): top=0 last=len(s) while top<=last: mid=(top+last)//2 if v==s[mid]: return mid elif v>s[mid]: top=mid+1 elif v<s[mid]: last=mid-1 return None s=[randint(1,100) for i in range(10)] s.sort() print(s) k=int(input()) ans=b(s,k) if ans!=None: print('找到, 下标是: ',ans) else: print('没有找到这个数! ')
上一题 下一题