|
列表 d = [1, 2, 3, 4, 5, 6],长度为 6。
对于每个 k(从 0 到 n-1),查找 key = d[k],统计二分查找的比较次数(即 c 的累加值)。
1. 当 n=2(k=0,1):
查找 key=1(d[0]):
i=0, j=5 → m=(0+5)//2=2(值3),比较:1<3 → j=1,c=1
i=0, j=1 → m=(0+1)//2=0(值1),比较:1==1 → break,c=2
本次查找次数:2
查找 key=2(d[1]):
i=0, j=5 → m=2(值3),比较:2<3 → j=1,c=3
i=0, j=1 → m=0(值1),比较:2>1 → i=1,c=4
i=1, j=1 → m=1(值2),比较:2==2 → break,c=5
本次查找次数:3
总 c = 2 + 3 = 5(奇数)
2. 当 n=3(k=0,1,2):
查找 key=1:次数2(同上),c=2
查找 key=2:次数3(同上),c=5
查找 key=3(d[2]):
i=0, j=5 → m=2(值3),比较:3==3 → break,c=6
本次查找次数:1
总 c = 2 + 3 + 1 = 6(偶数)
3. 当 n=4(k=0,1,2,3):
查找 key=1:次数2,c=2
查找 key=2:次数3,c=5
查找 key=3:次数1,c=6
查找 key=4(d[3]):
i=0, j=5 → m=2(值3),比较:4>3 → i=3,c=7
i=3, j=5 → m=(3+5)//2=4(值5),比较:4<5 → j=3,c=8
i=3, j=3 → m=3(值4),比较:4==4 → break,c=9
本次查找次数:3
总 c = 2+3+1+3 = 9(奇数)
4. 当 n=5(k=0,1,2,3,4):
查找 key=1:次数2,c=2
查找 key=2:次数3,c=5
查找 key=3:次数1,c=6
查找 key=4:次数3,c=9
查找 key=5(d[4]):
i=0, j=5 → m=2(值3),比较:5>3 → i=3,c=10
i=3, j=5 → m=4(值5),比较:5==5 → break,c=11
本次查找次数:2
总 c = 2+3+1+3+2 = 11(奇数)
总结:
n=2:c=5(奇数)
n=3:c=6(偶数)
n=4:c=9(奇数)
n=5:c=11(奇数)
只有 n=3 时 c 为偶数(6),其他 n 的 c 均为奇数。
因此,输出结果与其他三个不同的是 n=3,对应选项 B。
这是思考过程 |
|