hash-table (空間換時間)
利用雜湊函式生成對應的index(o(1);
利用生成的index(o(1)) 來操作指定位置的元素 o(1) 時間複雜度
hash 衝突:
兩個不同的key ,經過雜湊函式計算出相同的結果解決辦法:
1) 開放定址法:按照一定規則向其他位址探測,直到遇到空桶
2) 再hash法 :利用另乙個hash函式再次計算,看是否與第乙個相
3) 鏈位址法:通過鍊錶將同一index的元素串起來
jdk 1.8 解決hash衝突:
預設單向鍊錶將元素串起來
在新增元素時有可能將單向鍊錶轉為紅黑樹(當雜湊表容量大於64 或者鍊錶節點數大於8)
當紅黑樹的節點少於一定數量後,也會轉成單向鍊錶
表為什麼使用單鏈表?
1.挨個比較key 相同就覆蓋掉 不同就尾插
2. 每次從頭開始比較
3. 節省空間 比雙鏈表少乙個指標
hash 函式:
先生成key 的雜湊值
再讓key 的雜湊值與陣列的大小進行相關的計算 生成索引值(hash(key)要小於陣列)
hash(key)%table.length 為了提高效率 ,可以將 % 更換為 & (前提是將陣列的長度設計為2en) hash(key)&(table.length-1) ——》 按照此方法得出的數字必然小於table.length (2en -1 保證數字全部是1)
良好的雜湊函式:
算出的索引分布比較均勻
資料結構 雜湊表(雜湊表)hash table
hash table 在計算機中,雜湊表 是 一種實現了關聯陣列 抽象資料型別的資料結構,這種資料結構可以對映 鍵 key 和 值 value 補充 關聯陣列 在電腦科學中,乙個關聯陣列 associative array 對映 map 符號表 symbol table 或者是字典 dictiona...
資料結構 雜湊表 雜湊表 原理
記錄的儲存位置 f 關鍵字 這裡的對應關係f稱為雜湊函式,又稱為雜湊 hash函式 採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為雜湊表或雜湊表 hash table 雜湊表hashtable key,value 就是把key通過乙個固定的演算法函式既所謂的雜湊函式轉換成乙個整型...
資料結構 雜湊表查詢(雜湊表)
對於查詢,有順序表直接遍歷,有折半查詢直到查詢成功。但是這都需要不斷的比較,每一次查詢都需要重新遍歷,所以當資料龐大時是非常耗時的。雜湊表是一種可以避免多次比較,直接通過關鍵字就可以得到要查詢的記錄記憶體儲存位置。例如就像是乙個函式,每乙個自變數都對應著乙個函式值,即 這屬於雜湊技術,不需要比較就可...