散列表解決沖突的線性探測與平方探測查找成功、失敗平均查找長度


默認已經學習過前面內容
m是散列表表長,p是散列函數的取余數,di是處理沖突的增量,H(key)是散列函數

線性探測法

H'(key)=(H(key)+di)%m di=0,1,2,...,m-1
其中H(key)=key%p
ASL成功=(插入記錄的比較次數總和)/插入記錄的次數
ASL失敗=([0,p-1]的查找不成功的次數就是直接找關鍵字到第一個地址上關鍵字為空的距離 總和)/p

例題1

表長m=14,H(key)=key%11,表中現有4個結點,其中H(15)=4,H(38)=5,H(61)=6,H(84)=7,處理沖突使用線性探測法,求插入關鍵字49的地址
Ans:
構造散列表

15 38 61 84 49
0 1 2 3 4 5 6 7 8 9 10 11 12 13

比較次數:

  • 15 1
  • 38 1
  • 61 1
  • 84 1
  • 49 4

ASL成功 = (1+1+1+1+4)/5 = 8/5

ASL失敗 = (1+1+1+1+6+5+4+3+2=1+1)/11 = 26/11

平方探測法

H'(key)=(H(key)+di)%m di= 0, 1^2, -1^2, 2^2, -2^2, ..., k^2, -k^2
ASL成功=(插入記錄的比較次數總和)/插入記錄的次數
ASL失敗=([0,p-1]的查找不成功的次數就是直接找關鍵字到第一個地址上關鍵字為空的距離 總和)/p

例題2

H(key)=key%8 {1,13,12,34,38,33,27,22} 表長11
Ans:
構造散列表

33 1 34 27 12 13 38 22
0 1 2 3 4 5 6 7 8 9 10

比較次數:

  • 33 3
  • 1 1
  • 34 1
  • 27 1
  • 12 1
  • 13 1
  • 38 1
  • 22 2
    ASL成功 = (3+1+1+1+1+1+1+2)/8=11/8

失敗次數:

  • 33 3
  • 1 5
  • 34 7
  • 27 9
  • 12 8
  • 13 6
  • 38 4
  • 22 2
    ASL失敗 = (3+5+7+9+8+6+4+2)/8 = 11/2

總結

ASL成功= 插入關鍵字時的比較次數 / 關鍵字個數
ASL失敗 = 查找不成功的比較次數 / 查找不成功時的地址個數
線性探測與平方探測的失敗比較次數求法不同


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM