哈希表 是惟一一個專用於集合的數據結構。能夠以常量的平均時間實現插入,刪除和查找數組
哈希表的時間複雜度是 O(1)數據結構
哈希表的思想是 用一個與集合差很少大小的數組來存儲這個集合,將數據元素的關鍵字映射的數組的下標上面,這個映射咱們稱之爲 散列函數 數組稱之爲 散列表,查找數據的時候,根據被查找的關鍵字找到存儲數據元素的地址,從而獲取元素函數
散列函數的應用帶來一個比較複雜的問題:;設計
由於散列函數的定義域範圍比值域大 致使2個或者更多的數據元素可能會被映射到同一個位置 稱爲 衝突或者碰撞。這種狀況是不可避免的。所以 實現哈希表 二個基本的問題是hash
1如何設計散列函數 io
2如何解決碰撞問題table
解決哈希碰撞的幾種方法:方法
1:開放地址法數據
2:在哈希法 C# hashtabledict
3: 鏈地址法 C# dictionary
4:創建一個公共溢出區