資料結構與演算法

在大小為7(位置0~6)的雜湊表中,以雜湊函數 h(k) = k mod 7 依序存放鍵10、17、24、3。發生碰撞時,使用把位置逐一往後移(6的下一個是0)來尋找空位置的線性探測法。鍵3會存放在哪個位置?

  1. A位置3
  2. B位置4
  3. C位置6
查看答案與解析

正確答案:C. 位置6

4個鍵除以7的餘數都是3,因此都會先檢查位置3。10放入位置3;17因位置3已被占用而放入位置4;24因位置3、4已被占用而放入位置5。3因位置3、4、5都已被占用,所以存放在位置6。如此可見,線性探測法會使被占用的位置聚集在一起(叢集),越晚來的鍵需要檢查的次數越多。

  • A. 這是雜湊值本身的位置,但已經放了10。
  • B. 這是17放入的位置。其後的位置5也已放入24。
  • C. 正確。位置3、4、5都已被占用,因此放入空的位置6。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 比較處理雜湊表碰撞的鏈結法(以鏈結串列串接相同位置的元素)與開放定址法(在表中尋找其他空位置),下列說明何者正確?負載因子為存放的元素數除以表的大小所得的值。
  2. 與陣列中央的元素比較、每次將搜尋範圍縮小一半的二分搜尋,其使用的前提條件為下列何者?
  3. 以二分搜尋在依升冪排序的1,000個不同值中尋找某個值。若1次比較就能得知「相等、較小、較大」,包含找得到與找不到的情況,比較次數最多為幾次?
  4. 以二分搜尋在依升冪排列的陣列 a[0]~a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60 中尋找38。搜尋範圍從下端 lo = 0、上端 hi = 9 開始,中央位置為 (lo + hi) ÷ 2 無條件捨去。依序排列與38比較的元素值,下列何者正確?
  5. 以泡沫排序將陣列 5, 3, 8, 1, 4 依升冪排列。從開頭比較相鄰的兩個元素,若左側較大就交換,這樣的操作進行到末尾1次(1輪)後,陣列為下列何者?