数据结构——散列表(1)

王争数据结构笔记(18)

1、散列表,也叫做哈希表。主要利用数组支持下标随机访问数据的特性演化而来。

2、散列表两个核心:散列函数设计以及散列冲突问题的解决。散列函数设计的好坏决定了散列冲突的概率。解决散列冲突的办法有开放寻址法和链表法。

3、所有的散列函数无法避免散列冲突。

4、开放寻址冲突解决中包含:线性探测、二次探测和双重散列。线性探测的每次探测步长为1,探测的下标序列时hash(key)+0,hash(key)+1,……。那么二次探测的步长为原来的二次方,探测下标序列就是hash(key)+0,hash(key)+1^2,hash(key)+2^2,……。双重散列使用一组散列函数,先用第一个散列函数,如果位置已经占用,再用第二个散列函数,直到zhao到空闲位置。

5、散列表的装载因子用于表示三列中的空位多少。因为随散列表空闲位置减少,散列冲突的概率会大大提高。

6、链表法中针对散列表的每一个桶或者槽对应一条链表。当插入的时候,通过散列函数计算对应槽位,将其插入到对应链表中即可。查找或者删除一个元素的时候,同样通过散列函数计算对应的槽,遍历链表查找或者删除。这两个操作的时间与链表长度k有关,为O(k)。

 

 

你可能感兴趣的:(数据结构)