有如下python程序段:
key=int(input(“请输入待查数据:“))
b=[5,8,11,21,21,21,56,65,72]
i=0;j=len(b)-1
while i<=j:
m=(i+j)//2
if key<=b[m]:
j=m-1
else:
i=m+1
※假如输入的值是5,按照提示执行代码:
在进入while循环前i初值是 00,j初值是 88,key值是 55。
第一次循环执行后,m值是 44,b[m]值是 2121,i值是 00,j值是 33。
第二次循环执行后,m值是 11,b[m]值是 88,i值是 00,j值是 00。
第三次循环执行后,m值是 00,b[m]值是 55,i值是 11,j值是 00。
是否找到 是是(选填:是/否),找到了是否立即退出循环 是是(选填:是/否),总共查找了 33次,执行以上代码退出循环时,i与j关系的python表达式可以是 i=j+1i=j+1、j=i-1j=i-1。
※假如输入的值是9,按照提示执行代码:
在进入while循环前i初值是 00,j初值是 88,key值是 99。
第一次循环执行后,m值是 44,b[m]值是 2121,i值是 00,j值是 33。
第二次循环执行后,m值是 11,b[m]值是 88,i值是 22,j值是 33。
第三次循环执行后,m值是 22,b[m]值是 1111,i值是 22,j值是 11。
是否找到 是是(选填:是/否),是否需要继续查找 否否(选填:是/否),总共查找了 33次,执行以上代码退出循环时,i与j关系的python表达式可以是 i=j+1i=j+1、j=i-1j=i-1。
※假如输入的值是21,按照提示执行代码:
在进入while循环前i初值是 00,j初值是 88,key值是 2121。
第一次循环执行后,m值是 44,b[m]值是 2121,i值是 55,j值是 88。
是否找到 否否(选填:是/否),是否需要继续查找 是是(选填:是/否)。
第二次循环执行后,m值是 66,b[m]值是 5656,i值是 55,j值是 55。
第三次循环执行后,m值是 55,b[m]值是 2121,i值是 66,j值是 55。
第四次循环执行后,m值是 55,b[m]值是 2121,i值是 66,j值是 55。
是否找到 是是(选填:是/否),找到了是否立即退出循环 是是(选填:是/否),总共查找了 33次,执行以上代码退出循环时,i与j关系的python表达式可以是 i=j+1i=j+1、j=i-1j=i-1。
变量i和j有什么特殊含义 循环结束时i的值为key的值在列表b中最接近比key值大的数所在的列标位置,i的值比j大1循环结束时i的值为key的值在列表b中最接近比key值大的数所在的列标位置,i的值比j大1。
【考点】查找算法及其程序实现.
【答案】0;8;5;4;21;0;3;1;8;0;0;0;5;1;0;是;是;3;i=j+1;j=i-1;0;8;9;4;21;0;3;1;8;2;3;2;11;2;1;是;否;3;i=j+1;j=i-1;0;8;21;4;21;5;8;否;是;6;56;5;5;5;21;6;5;5;21;6;5;是;是;3;i=j+1;j=i-1;循环结束时i的值为key的值在列表b中最接近比key值大的数所在的列标位置,i的值比j大1
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/6/27 10:35:59组卷:0引用:1难度:0.7
相似题
-
1.某对分查找算法的VB程序段如下:
数组元素a(1)到a(10)的值依次为“12,15,18,20,25,39,47,88,90,99”,经过上述代码查找后,下列表达式正确的是( )发布:2024/12/20 16:0:2组卷:5引用:2难度:0.5 -
2.某数组d中的数据依次是[8,12,15,28,28,32,36,39],要查找某个元素是否在数组中,下列说法正确的是( )
发布:2024/12/20 0:0:1组卷:3引用:1难度:0.7 -
3.有如下对分查找VB程序段:
若数组元素a(1)~a(10)的值依次为“5,9,13,18,22,27,31,39,40,44”,运行程序后,文本
框Text2中显示的内容为3,则输入的key值不可能为( )发布:2024/12/20 20:0:2组卷:3引用:2难度:0.4