44.設串列(list)已儲存 10,240 筆排序過之數值,擬於該串列內找尋一“標的”(target)數值,若以“二元搜尋法”至多於
幾次資料比對後即可得知結果?
(A) 12
(B) 13
(C) 14
(D) 15
答案:登入後查看
統計: A(4), B(4), C(18), D(3), E(0) #3228047
統計: A(4), B(4), C(18), D(3), E(0) #3228047
詳解 (共 1 筆)
#6210148
二元搜尋法(Binary Search) 的基本原理是在每一步比較中將搜尋範圍縮小一半。因此,搜尋所需的最大比較次數可以透過計算 ⌈log2n⌉\lceil \log_2 n \rceil⌈log2n⌉ 來確定,其中 nnn 是資料的總數量,⌈⋅⌉\lceil \cdot \rceil⌈⋅⌉ 表示向上取整。
給定:
- n=10,240n = 10,240n=10,240
計算:
- 找出 kkk 使得 2k≥10,2402^k \geq 10,2402k≥10,240。
- 我們知道:
- 210=1,0242^{10} = 1,024210=1,024
- 213=8,1922^{13} = 8,192213=8,192
- 214=16,3842^{14} = 16,384214=16,384
- 因此,213=8,192<10,240<16,384=2142^{13} = 8,192 < 10,240 < 16,384 = 2^{14}213=8,192<10,240<16,384=214,所以 k=14k = 14k=14。
這表示,使用二元搜尋法在最壞情況下最多需要 14 次比較即可確定目標值是否存在於串列中。
0
0