哈希表 是唯一一个专用于集合的数据结构。可以以常量的平均时间实现插入,删除和查找
哈希表的时间复杂度是 O(1)
哈希表的思想是 用一个与集合差不多大小的数组来存储这个集合,将数据元素的关键字映射的数组的下标上面,这个映射我们称之为 散列函数 数组称之为 散列表,查找数据的时候,根据被查找的关键字找到存储数据元素的地址,从而获取元素
散列函数的应用带来一个比较复杂的问题:;
因为散列函数的定义域范围比值域大 导致2个或者更多的数据元素可能会被映射到同一个位置 称为 冲突或者碰撞。这种情况是不可避免的。因此 实现哈希表 二个基本的问题是
1如何设计散列函数
2如何解决碰撞问题
解决哈希碰撞的几种方法:
1:开放地址法
2:在哈希法 C# hashtable
3: 链地址法 C# dictionary
4:建立一个公共溢出区