資料結構 雜湊表(雜湊表)hash table

2021-08-11 17:56:10 字數 1187 閱讀 3746

hash table     

在計算機中,雜湊表 是 一種實現了關聯陣列 抽象資料型別的資料結構,這種資料結構可以對映 鍵(key) 和 值(value).

補充:

關聯陣列:在電腦科學中,乙個關聯陣列(associative array),對映(map),符號表(symbol table),或者是字典(dictionary)是由鍵值對集合組成的 抽象資料型別 的 一種;

抽象資料型別:在電腦科學中,乙個抽象資料型別(abstract data type adt)是 具有類似行為的特定類別的資料型別 的數學模型;

雜湊表 通過 乙個關於鍵值的 雜湊函式 ,將 所需查詢的資料對映到 表中的乙個位置 來訪問記錄;

在理想狀態下,雜湊函式將 每個鍵(key) 分配給 唯一的 bucket,但是大多數 雜湊表 的 雜湊函式的不完善性,會導致 雜湊碰撞(collision),即雜湊函式 為不同的 key 生成了相同的 索引(index);

hashing      

雜湊法(hashing)的思想是 在 桶陣列(array of buckets)中 分配  entry(鍵值對)。給定乙個 鍵(key),該演算法計算出乙個 索引,該索引代表了 entry 的 位址。

index = f(key, array_size)

通常這是分兩步完成:

hash = hashfunc(key)

index = hash % array_size

在上面的方法中,hash 值 與陣列 大小無關,然後利用 他 和  陣列 大小 取模運算 得到 索引值(0 到 array_size -1  之間的乙個數字);

乙個好的 雜湊函式  和 演算法實現 對於 雜湊表的效能 有很大的提公升,但是通常也很難做到。

load factor    

載入因子

load factor = n / k

n:填入表中的元素個數

k:雜湊表的長度

雜湊表長度固定的前提下,載入因子 越大,填入表中的元素越多,發生衝突的可能性越大,效率也就越慢;

collision resolution   

雜湊衝突時不可避免的,以下列出了常見的 雜湊衝突解決策略,所有的解決方法都需要 將 鍵 儲存在 表中。

資料結構 雜湊表 雜湊表 原理

記錄的儲存位置 f 關鍵字 這裡的對應關係f稱為雜湊函式,又稱為雜湊 hash函式 採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為雜湊表或雜湊表 hash table 雜湊表hashtable key,value 就是把key通過乙個固定的演算法函式既所謂的雜湊函式轉換成乙個整型...

資料結構 雜湊表查詢(雜湊表)

對於查詢,有順序表直接遍歷,有折半查詢直到查詢成功。但是這都需要不斷的比較,每一次查詢都需要重新遍歷,所以當資料龐大時是非常耗時的。雜湊表是一種可以避免多次比較,直接通過關鍵字就可以得到要查詢的記錄記憶體儲存位置。例如就像是乙個函式,每乙個自變數都對應著乙個函式值,即 這屬於雜湊技術,不需要比較就可...

資料結構 雜湊表1(雜湊表)

雜湊表 雜湊表是一種資料結構,它提供了快速的插入操作和查詢操作,其基於陣列來實現。雜湊化方式 1 直接將關鍵字作為索引。弊端 關鍵字資料型別只能是整形。2 將單詞轉換成索引。將字母轉換成ascii碼,然後進行相加。弊端 會出現不同的字串轉換ascii碼的值和相同。冪的連乘。弊端 通過冪的連乘得到的k...