44.設串列(list)已儲存 10,240 筆排序過之數值,擬於該串列內找尋一“標的”(target)數值,若以“二元搜尋法”至多於 幾次資料比對後即可得知結果?
(A) 12
(B) 13
(C) 14
(D) 15

答案:登入後查看
統計: A(4), B(4), C(18), D(3), E(0) #3228047

詳解 (共 1 筆)

#6210148

二元搜尋法(Binary Search) 的基本原理是在每一步比較中將搜尋範圍縮小一半。因此,搜尋所需的最大比較次數可以透過計算 ⌈log⁡2n⌉\lceil \log_2 n \rceillog2n 來確定,其中 nnn 是資料的總數量,⌈⋅⌉\lceil \cdot \rceil 表示向上取整。

給定:

  • n=10,240n = 10,240n=10,240

計算:

  1. 找出 kkk 使得 2k≥10,2402^k \geq 10,2402k10,240
  2. 我們知道:
    • 210=1,0242^{10} = 1,024210=1,024
    • 213=8,1922^{13} = 8,192213=8,192
    • 214=16,3842^{14} = 16,384214=16,384
  3. 因此,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