第二十二次 查詢 三

2021-10-01 19:25:42 字數 1378 閱讀 5838

雜湊表(hash)的查詢技術

雜湊函式的構造

直接定址法

除留餘數法

數字分析法

平方取中法

摺疊法(分段疊加法)

衝突處理方法

開放定址法

鏈位址法

建立公共溢位區

雜湊函式的構造

直接定址法

除留餘數法

數字分析法

平方取中法

摺疊法(分段疊加法)

衝突處理方法

開放定址法

鏈位址法

建立公共溢位區

衝突處理方法

開放定址法

鏈位址法

建立公共溢位區

雜湊函式——除留餘數法

一般情況下,選p為小於或等於表長(最好接近表長)的最小素數

除留餘數法是一種最簡單、也是最常用的構造雜湊函式的方法,並且不要求事先知道關鍵碼的分布。

除留餘數法是一種最簡單、也是最常用的構造雜湊函式的方法,並且不要求事先知道關鍵碼的分布。

對關鍵碼平方後,按雜湊表大小,取中間的若干位作為雜湊位址(平方後擷取)。

雜湊函式——數字分析法

根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。

雜湊函式——平方取中法

對關鍵碼平方後,按雜湊表大小,取中間的若干位作為雜湊位址(平方後擷取)。

對關鍵碼平方後,按雜湊表大小,取中間的若干位作為雜湊位址(平方後擷取)。

將關鍵碼從左到右分割成位數相等的幾部分,將這幾部分疊加求和,取後幾位作為雜湊位址。

衝突的處理

開雜湊方法( open

hashing,也稱為拉鍊法,separate chaining ,鏈位址法)

閉雜湊方法( closed

hashing,也稱為開位址方法,open addressing ,開放定址法)

建立公共溢位區

線性探測法

hi=(h(key)+di) % m (di=1,2,…,m-1)

1二次探測法

hi=(h(key)+di)% m
1

(di=12,-12,22,-22,…,q2,-q2且q≤m/2)

隨機探測法

處理衝突的方法——拉鍊法(鏈位址法)

用拉鍊法處理衝突構造的雜湊表叫做開雜湊表。

設n個記錄儲存在長度為m的雜湊表中,則同義詞子表的平均長度為n / m。

處理衝突的方法——公共溢位區

基本思想:

雜湊表包含基本表和溢位錶兩部分(通常溢位表和基本表的大小相同),

將發生衝突的記錄儲存在溢位表中。

查詢時,對給定值通過雜湊函式計算雜湊位址,先與基本表的相應單元進行比較,若相等,則查詢成功;否則,再到溢位表中進行順序查詢。

第二十二題

第二十二題 韓信點兵 在中國數學史上,廣泛流傳著乙個 韓信點兵 的故事 韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點名的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數 按從1到5報數,記下最末乙個士兵報的數為1 按從1...

python第二十二次課 2018 05 22

python執行緒 threading多執行緒 threading用於提供執行緒相關的操作,執行緒是應用程式中工作的最小單元。python當前版本的多執行緒庫沒有實現優先順序 執行緒組,執行緒也不能被停止 暫停 恢復 中斷。threading模組提供的類 thread,lock,rlock,cond...

第二十二天

區域性變數和全域性變數 在乙個函式內部定義的變數是內部變數,他只有在本函式範圍內才有效,在此函式之外是不能使用這些變數的,這稱為區域性變數。復合語句的的變數是可以用 全域性變數也叫外部變數 全域性變數從 定義從 開始用 變數的儲存類別 從空間上講剛剛的就是作用域 從空間 還可以從變數值存在的時間 生...