首页 > 试题广场 >

在顺序表(3,6,8,10,12,15,16,18,21,2

[单选题]
在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为
  • 2
  • 3
  • 4
  • 5
推荐
答案:C
第一次和15进行比较
第二次和8进行比较
第三次和10进行比较
第四次和12进行比较
编辑于 2015-01-08 15:44:38 回复(1)

发现11不在顺序表中,并有11个元素,可以计算log(N)+1=4

注:log以2为底

发表于 2017-04-17 22:03:59 回复(0)
正确的二分查找应该是一次折半后,high=middle-1 或者 low=middle+1;
所以第一次查找时 high=10,low=0; middle= 0+10/2 = 5,即15;
第二次查找时 high=5-1, low =0; middle = 0+(5-1-0)/2 = 2,即8;
第三次查找时 high=4, low = 2+1; middle = 3+(4-3)/2 = 3,即10;
第四次查找时 此时 low=3+1=4,而此时high =4,故查找结束。比较次数为4次,选C
发表于 2015-08-27 15:16:38 回复(0)
正确的二分查找应该是一次折半后,high=middle-1 或者 low=middle+1;
所以第一次查找时 high=10,low=0; middle= 0+10/2 = 5,即15;
第二次查找时 high=5-1, low =0; middle = 0+(5-1-0)/2 = 2,即8;
第三次查找时 high=4, low = 2+1; middle = 3+(4-3)/2 = 3,即10;
第四次查找时 此时 low=3+1=4,而此时high =4,故查找结束。比较次数为4次,选C、

发现11不在顺序表中,并有11个元素,可以计算log(N)+1=4;(log以2为底)
发表于 2019-04-03 20:24:31 回复(0)
3,6,8,10,12,15,16,18,21,25,30
0 1 2  3   4   5    6   7  8   9  10
第1次和第(0+10)/2 = 5的数也就是15比较,11<15;
第2次和第(0+5)/2 = 2的数也就是8比较,11>8;
第3次和第(3+4)/2 = 3的数也就是10比较,11>10;
第4次和第(4+4)/2 = 4的数也就是12比较,11≠12;
查找失败
发表于 2018-03-21 09:07:37 回复(0)
同最差的结果:2^4=12>11
发表于 2017-12-18 09:55:01 回复(0)
答案是C吧
第一次为start=0, end=10,mid=(0+10)/2=5,即和15比较;
第二次为start=0, end=mid-1=4,mid=(0+4)/2=2,即和8比较;
第三次为start=mid+1=3, end=4,mid=(3+4)/2=3,即和10比较;
第四次为start=mid+1=4, end=4,mid=(4+4)/2=4,即和12比较,
此时关键字小于12,end=mid-1=3,end<start 程序结束。
发表于 2017-08-10 10:05:41 回复(0)
选B。关键码的比较次数为3,分别为15,8, 10。
发表于 2015-09-16 10:59:29 回复(1)

有点好奇,这不是有序列表呀,假如里面有11这个元素,那?不就完了?

发表于 2019-10-14 17:51:33 回复(0)
依次比较15,8, 10, 12
发表于 2019-06-28 15:22:19 回复(0)
15- 8 -10-12
发表于 2018-09-02 22:14:17 回复(0)
最后一次并不确定11就在数组里面,所以也是要比较的。
发表于 2018-01-15 19:55:55 回复(0)
3,6,8,10,12,15,16,18,21,25,30
0 1 2  3   4    5   6   7   8   9  10;
第一次是an[0]~an[10]  和an[5]
第二次是an[0]~an[4]  和an[2]
第三次是an[3]~an[4]  和an[3]
第四次是an[4]~an[4]  和an[4]
发表于 2017-08-02 11:35:36 回复(0)
我选4次  第一次15 第二次12 第三次10 然后最后就是11(虽然查找失败)
发表于 2015-01-09 16:30:24 回复(0)