① 散列存儲與其他存儲主要有什麼區別
散列存儲是直接將關鍵字的值做一個映射到存儲地址 索引存儲則是另外使用關鍵字來構建一個索引表(也可以是單級,也可以是多級的),先在索引表中找到存儲
② 哈希表不僅僅反映數據元素的存儲位置,還反映數據元素之間的相互關系對嗎
哈希表的定義哈希存儲的基本思想是以關鍵字Key為自變數,通過一定的函數關系(散列函數或哈希函數),
③ 對線性表(38、25、74、52、48)進行哈希存儲,採用h(K)=K%7作為哈希函數,如果採用線
平均查找長度ASL=2
④ 散列存儲時,哈希表的大小可隨意選取,通常取10的倍數
摘要 親,您好。這邊正在為您整理最精準的答案,請稍等片刻。
⑤ 數據結構中散列存儲和索引存儲的區別!求教 最好能生動點
散列存儲是直接將關鍵字的值做一個映射到存儲地址
索引存儲則是另外使用關鍵字來構建一個索引表(也可以是單級,也可以是多級的),先在索引表中找到存儲位置後,再訪問內容
⑥ 哈希存儲和哈希函數有關系嗎
哈希函數其實是「Hash函數」,只不過是音譯過來的。 Hash函數: Hash,一般翻譯做"散列",也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
⑦ 假定一個待哈希存儲的線性表為{32,75,63,48,94,25,36,18,70},哈希地址空間為[0…10],若採用除留余數法構
32,75,63,48,94,25,36,18,70,這些關鍵碼除留余數,到底是對幾,即使是對11除留余數
32 % 11 = 10
75 %11 = 9
63 % 11 = 8
48 % 11 = 4
94 % 11 = 6
25 % 11 = 3
36 % 11 = 3,這里發生沖突,因此題目中應該還有解決沖突的方法呢,這個不知道,
18 % 11= 7
70 % 11 = 4,這個也沖突了
麻煩將沖突解決方法貼上來
⑧ hash函數創始人
發明者不知道。
發明的目的是提高海量數據的查找速度。
簡單問題舉例:
數據表中有N個無序的字元串(例如:英文人名),
給你一個字元串,請迅速找到它在數據表中的序號。
最笨的方法是逐個比較的方式來查找。查找時間是O(N),簡單說最後的
情況是比較N次。
hash 表能夠加快查找速度。使用hash表首先要申請一個定長的指針數組。
通過在建立數據表時通過特定的計算公式(hash散列函數)計算出每個字元串對應的一個數值。而後把此數值作為數組下標,把此字元串在數據表的序號保存在此數組元素中。(可以擴展到保存一個結構體指針)
將來想查找某字元串對應位置時,只需要通過hash散列函數計算出字元串對應的值就可以直接知道此字元串的序號等信息了。這樣查找時間是O(1)了。因為不需要查找了,知道數組下標就能訪問數組相應元素了,而元素中保存的就是序號等信息。
⑨ 堆和隊列一般不使用哈希存儲對嗎
堆和隊列一般不使用哈希存儲。
哈希存儲亦稱「散列存儲」,專用於幾何結構的一種存儲方式。因為哈希函數需要盡量簡單,其值域必須在表長的范圍之內,盡量不要產生「沖突」,故不適用於堆和隊列。
堆是一種經過排序的樹形數據結構,每個節點都有一個值。通常所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。由於堆的這個特性,常用來實現優先隊列。
隊列也是一種線性結構。 特殊之處在於它只允許在隊列的前端(front)進行刪除操作,而在隊列的後端(rear)進行插入操作。當隊列中沒有元素時,即front=rear,稱為空隊列。在隊列中插入一個隊列元素稱為入隊,從隊列中刪除一個隊列元素稱為出隊。隊列符合先進先出(FIFO,first in first out)原則。