資料結構與演算法分析 五 雜湊

2021-10-10 13:59:37 字數 1793 閱讀 9736

理想的雜湊表是乙個包含有關鍵字的具有固定大小的陣列。關鍵字就是帶有相關值的字串。表的大小記作table-size,關鍵字被對映到從0到tablesize - 1這個範圍中的某個數。

對映

關鍵字被對映到0到tablesize - 1這個範圍中的某個數,並且被放到適當單元中。這個對映就叫做雜湊函式。

理想雜湊函式

理想情況下它應該運算簡單並且應該保證任何兩個不同的關鍵字對映到不同的單元。

衝突

當兩個關鍵字對映到同乙個值的時候,稱為衝突,需要選擇函式來解決衝突。

使用

關鍵字為整數,一般合理方法就是直接返回「key mod size」。

缺點

關鍵字一般都為字串

使用

將關鍵字字串中字元的ascii碼值加起來。

缺點

char的值最多為127,如果8個字元長,關鍵字ascii和在0到1016之間,如果size過大,就不能對映到後面。

使用

缺點

英文不是隨機的,三個字母的不同組合中的28%才能被真正用到。

使用

用32代替27,因為32作乘法是移動五位二進位制

缺點

如果關鍵字特別長,該雜湊函式計算起來將會花費過多的時間。

將雜湊到同乙個值的所有元素保留到乙個表中。

需要指標,給新單元分配位址需要時間。

思想

f(i) = i

缺點

佔據的單元容易形成區塊,稱為聚集。當表有多於一半被填滿的話,線性探測法的效率就會很低。

思想

f(i) = i^2,當衝突時,其下乙個位置為1、4、9。。。

規律

如果表有一半是空的,並且表的大小是素數,那麼保證總能插入乙個新元素。

缺點

會造成二次聚集,雖然排除了一次聚集,但是雜湊到同一位置上的那些元素將探測相同的備菜單元。

思想

將第二個雜湊函式

編譯器跟蹤源**中宣告的變數

節點的名字對映到數字,方便查詢

如map和unordered_map,前者紅黑樹實現,後者雜湊表實現,前者可以排序,後者操作更快

可以實現insert和find

二叉搜尋樹更方便排序,如找出最小元素等。

二叉搜尋樹的插入和查詢操作為o(logn),而雜湊為o(1)

資料結構與演算法簡記 雜湊演算法

將任意長度的二進位制值串對映為固定長度的二進位制值串,這個對映的規則就是雜湊演算法。而通過原始資料對映之後得到的二進位制值串就是雜湊值。md5 md5 message digest algorithm,md5 訊息摘要演算法 sha secure hash algorithm,安全雜湊演算法 借助h...

資料結構與演算法 雜湊表

對映在數學上相當於乙個函式f x a b。雜湊表的核心是乙個雜湊函式 hash function 這個函式規定了集合a中的元素如何對應到集合b中的元素。根據設定的雜湊函式 h key 和處理衝突的方法 將一組關鍵字映像到乙個有限的連續的位址集 區間 上,並以關鍵字在位址集中的 像 作為相應記錄在表中...

資料結構與演算法 雜湊表

雜湊表也叫雜湊表,hash表是一種根據關鍵字值 key value 而直接進行訪問的資料結構。是把記錄的儲存位置和記錄的關鍵字之間建立對應關係的一種儲存結構。雜湊表又叫 雜湊表,速度很快,最常用的一種儲存機構是順序表 鍊錶的結構 主結構是順序表,每個順序表中的元素又對應一張鍊錶。雜湊表的常用資料結構...