1. 程式人生 > >散列表成功和失敗的ASL計算的方法

散列表成功和失敗的ASL計算的方法

結合王道論壇書P267頁例題

以下求解過程是按照“計算機統考的計算方法”,不同的老師、教材在“處理衝突”上可能會有不同的方法,所以最主要的是掌握原理即可,對於考研的朋友最好掌握統考真題的解題方法。 
題目 
例子:(2010年全國碩士研究生入學統一考試電腦科學與技術學科聯考計算機學科專業基礎綜合試題第一題)

將關鍵字序列(7、8、30、11、18、9、14)雜湊儲存到散列表中。散列表的儲存空間是一個下標從0開始的一維陣列。雜湊函式為: H(key) = (keyx3) MOD 7,處理衝突採用線性探測再雜湊法,要求裝填(載)因子為0.7。 
(1) 請畫出所構造的散列表; 
(2) 分別計算等概率情況下查詢成功和查詢不成功的平均查詢長度。 
1.散列表: 
α = 表中填入的記錄數/雜湊表長度 ==> 雜湊表長度 = 7/0.7 = 10 
H(7) = (7x3) MOD 7 = 0 H(8) = (8x3) MOD 7 = 3 H(30) = (30x3) MOD 7 = 6 
H(11) = (11x3) MOD 7 = 5 H(18) = (18x3) MOD 7 = 5 H(9) = (9x3) MOD 7 = 6 
H(14) = (14x3) MOD 7 = 0 
按關鍵字序列順序依次向雜湊表中填入,發生衝突後按照“線性探測”探測到第一個空位置填入。 
0 1 2 3 4 5 6 7 8 9 
7 14 8 11 30 18 9 
2.查詢長度: 
2.1 查詢成功的平均查詢長度 
(待查詢的數字肯定在散列表中才會查詢成功) 
查詢數字A的長度 = 需要和散列表中的數比較的次數; 
步驟: 
比如 查詢數字:8 
則 H(8) = (8x3) MOD 7 = 3 
雜湊表中地址3處的數字為8,進行了第一次比較:8 = 8,則查詢成功,查詢長度為1; 
比如查詢數字:14 
則 H(14) = (14x3) MOD 7 = 0 
雜湊表中地址0處的數字為7,進行第一次比較:7≠14 
雜湊表中地址1處的數字為14,進行第二次比較:14=14 ,則查詢成功,查詢長度為2。 
由此可得到如下資料:【2016年12月26日修改,多謝@一樓的朋友指正】 
0 1 2 3 4 5 6 7 8 9 
7 14 8 11 30 18 9 
1 2 1 1 1 3 3 
所以總的查詢成功的平均查詢長度= (1+1+1+1+3+3+2)/7 = 12/7 
2.2查詢不成功的平均查詢長度 
(待查詢的數字肯定不在散列表中) 
【解題的關鍵之處】根據雜湊函式地址為MOD7,因此任何一個數經雜湊函式計算以後的初始地址只可能在0~6的位置 


查詢0~6位置查詢失敗的查詢次數為: 

地址0,到第一個關鍵字為空的地址2需要比較3次,因此查詢不成功的次數為3. 
地址1,到第一個關鍵字為空的地址2需要比較2次,因此查詢不成功的次數為2. 
地址2,到第一個關鍵字為空的地址2需要比較1次,因此查詢不成功的次數為1. 
地址3,到第一個關鍵字為空的地址4需要比較2次,因此查詢不成功的次數為2. 
地址4,到第一個關鍵字為空的地址4需要比較1次,因此查詢不成功的次數為1. 
地址5,到第一個關鍵字為空的地址2(比較到地址6,再迴圈回去)需要比較5次,因此查詢不成功的次數為5. 
地址6,到第一個關鍵字為空的地址2(比較到地址6,再迴圈回去)需要比較4次,因此查詢不成功的次數為4. 
於是得到如下資料: 
0 1 2 3 4 5 6 7 8 9 
7 14 8 11 30 18 9 
3 2 1 2 1 5 4 
則查詢不成功的平均查詢長度 = (3+2+1+2+1+5+4)/7 = 18/7

相關推薦

列表成功失敗ASL計算方法

結合王道論壇書P267頁例題 以下求解過程是按照“計算機統考的計算方法”,不同的老師、教材在“處理衝突”上可能會有不同的方法,所以最主要的是掌握原理即可,對於考研的朋友最好掌握統考真題的解題方法。  題目  例子:(2010年全國碩士研究生入學統一考試電腦科學與技術學科聯考

溫度傳感器的AD值,電壓電阻的計算方法

溫度 輸入 alt ntc image 固定 logs 技術分享 images V是輸入的電壓,VCC是標準電壓,R為固定電阻,NTC為熱敏電阻。計算公式是V=(NTC/(NTC+R))*VCC電壓或電阻轉化AD的計算方式為AD=(V/VCC)*2^n=(NTC/(NTC

Hash表的平均查找長度ASL計算方法

hash表 ron red 二次 考研 table style 時間 長度 Hash表的“查找成功的ASL”和“查找不成功的ASL” ASL指的是 平均查找時間 關鍵字序列:(7、8、30、11、18、9、14) 散列函

【轉】焦慮、渴望中掙紮的我們,如何定義成功失敗?

cse 處理 很好 以及 國家 媒體 你我 slim 今天  我們總在一個人失敗的時候低估他,而在成功的時候又過於追捧,我們不吝對所謂的成功者送上無數鮮花和掌聲,而對所謂的失敗者則冷眼相待,嗤之以鼻。   英國作家阿蘭·德波頓(Alain de Botton),帶領我們檢視

平均查詢長度 Hash表的平均查詢長度ASL計算方法

Hash表的平均查詢長度ASL計算方法   Hash表的“查詢成功的ASL”和“查詢不成功的ASL” ASL指的是 平均查詢時間 關鍵字序列:(7、8、30、11、18、9、14) 雜湊函式: H(Key) = (key x 3) MOD 7

Hash表的平均查詢長度ASL計算方法

Hash表的“查詢成功的ASL”和“查詢不成功的ASL” ASL指的是 平均查詢時間 關鍵字序列:(7、8、30、11、18、9、14) 雜湊函式: H(Key) = (key x 3) MOD

ThinkPHP修改成功失敗的模板頁面

ThinkPHP修改成功和失敗的模板頁面:    一、修改預設檔案        1、找到目錄檔案:              C:\wamp64\www\tp5\thinkphp\library\traits\controlle\Jump.php        2、找到  

TCP的seqack號計算方法

seq和ack號存在於TCP報文段的首部中,seq是序號,ack是確認號,大小均為4位元組(注意與大寫的ACK不同,ACK是6個控制位之一,大小隻有一位, 僅當 ACK=1 時ack欄位才有效。建立 T

Spring security筆記4/4: 自定義成功失敗

自定義成功和失敗 還是在之前示例的基礎上,將認證成功跳轉頁面,修改為認證成功返回資料。 實現步驟 1. 複製上一示例的原始碼

【Azure API 管理】APIM CORS策略設定後,跨域請求成功失敗的Header對比實驗

  在文章“從微信小程式訪問APIM出現200空響應的問題中發現CORS的屬性[terminate-unmatched-request]功能”中分析了CORS返回空200的問題後,進一步對APIM的CORS策略進行驗證,深入學習<CORS 跨域資源共享>。 首先,我們已經學習到COR

列表查詢成功成功時的平均查詢長度

已知散列表長度為13,雜湊函式為H(key)=key % 11,處理衝突的方法為線性探測法,請畫出依次插入關鍵字(10,8,40,27,21,57,46,23,19,56)以後的散列表,並計算查詢成功和不成功時的平均查詢長度。 解:散列表是雜湊表的另一種叫法,雜湊函式為H(

D. Powerful array 離線+莫隊算法 給定n個數,m次查詢;每次查詢[l,r]的權值; 權值計算方法:區間某個數x的個數cnt,那麽貢獻為cnt*cnt*x; 所有貢獻即為該區間的值;

code ++ 計算方法 equal ati contains tdi ces sum D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input st

(考研)列表hashcodehashmap

兩個 code 作用 equal hash算法 too println 內容 import package tt; import java.util.HashMap; import java.util.Map; public class a0 { public

校驗計算方法

return 增加 ron cksum 代碼 sizeof 內容 設置 strong 1.說明:   [1]校驗和覆蓋的內容:     IP校驗和:IP首部。     ICMP校驗和:ICMP首部+ICMP數據;     UDP、TCP校驗和:首部+數據+12個字節偽首部(

列表(雜湊表)+雜湊衝突的解決方法

轉載http://www.nowamagic.net/academy/detail/3008060 1散列表 1簡單來說就是給一個key,就可以找到對應的key的儲存位置,就像身份證對應一個人一樣 儲存位置 = f(key) 2hashMap的key就是用到散列表 1.1雜湊衝突

python 列表list字典dict同時新增多個值,分別用extend、update方法

>>> d = [2,3,4] >>> e = [1,2,3] >>> d.extend(e)  # 用列表用extend()方法 >>> d [2, 3, 4, 1, 2, 3]   >>&

python資料型別之列表(list)其常用方法

列表是python常用資料型別之一,是可變的,可由n = []建立,也可由n = list()建立,第一種方法更常用。   常用方法總結:   # 建立方法 n = [] 或者 n = list() # index 查詢索引值 li = ['Edward', 'Mark'

資料結構演算法之——列表

散列表和連結串列經常組合起來使用,但它們是如何組合起來使用的,為什麼它們會經常一塊使用呢? 1. LRU 快取淘汰演算法? 基於連結串列實現 LRU 快取淘汰演算法的原理是這樣的:我們維護一個有序單鏈表,越靠近連結串列頭部的結點是越早訪問的。當有一個新的資料被訪問時,我們從連結串列頭開始順序遍歷

資料結構演算法之——列表

散列表的查詢效率並不能籠統地說成是 ,它和雜湊函式、裝載因子、雜湊衝突等都有關係。如果雜湊函式設計得不好,或者裝載因子過高,都可能會導致雜湊衝突發生的概率升高,查詢效率下降。 1. 如何設計雜湊函式? 雜湊函式設計的好壞,決定了雜湊衝突發生的概率,也直接決定了散列表的效能。那什麼才是好的雜湊函式

《資料結構與演算法之美》專欄閱讀筆記5——列表雜湊函式

這應該是看完最呆(沒有想到的那種呆~)的一個小章節了,給作者鼓掌,講的好好。果然抽象能力才是王道 文章目錄 1、散列表 1.1、小概念 1.2、雜湊函式 1