經典算法題:二分查找

二分查找

題目來源於京東校園招聘筆試真題

題目描述

有一個有序表爲 {1,5,8,11,19,22,31,35,40,45,48,49,50} ,當二分查找值爲 48 的結點時,查找成功需要比較的次數( )

  • A、4
  • B、3
  • C、2
  • D、1

題目分析

有序表的長度爲 13,根據 二分查找法 查找數的特性,每次都 n/2 進行折半查找。

  • 13 / 2 = 6
  • 6 / 2 = 3
  • 3 / 2 = 1
  • 1 / 2 = 0
    最多需要 4 次就能得出結果。

這道題目需要查找的是 48 ,列表下標索引從零開始標記。

  1. 第一步,求出 [0,12] 中間節點。
    0 + (12 - 0) / 2 = 6
    a[6] = 31 < 48
    區間變爲 [7,12]。
  2. 第二步,求出 [7,12] 中間節點。
    7 + (12 - 7) / 2 = 9
    a[9] = 45 < 48
    區間變爲 [10,12]。
  3. 第三步,求出 [10,12] 中間節點。
    10 + (12 - 10) / 2 = 11
    a[11] = 49 > 48
    區間變爲 [10,11]。
  4. 第四步,求出 [10,11] 中間節點。
    10 + (11 - 10) / 2 = 10
    a[10] = 48 = 48
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章