散列表查找性能分析总结

散列表,也叫哈希表,英文名是HashTable。是数据结构里面“查找”目录下的一个子知识点。如果散列表没有冲突,则散列查找是我们介绍的所有查找效率最高的。因为散列查找时间复杂度是O(1)。可惜的是,没有冲突的散列表只是一种理想,实际应用中冲突是不可避免的。

散列函数的构造方法:1.直接定址法。即取关键字的某个线性函数值为散列地址。2.数字分析法。3.平方取中法。4.折叠法。5.除留余数发。6.随机数法。关于方法的细节可以参考《大话数据结构》P356-P360。

处理散列冲突的方法有:1.开放定址法。说白了就是当f(key1)==f(key2),也即两个不同的关键字通过散列函数算出来的位置相同时,先占据位置的肯定就占据了,后来的那个只能占据其下一个临位置,若该临位置已占则再寻找下一个临位置。2.再散列函数法。就是说把前面说的除留余数、折叠、平方取中等等的方法都用上。每当发生散列地址冲突时就换一个散列函数,总会有一个可以把冲突解决掉。3.链地址法。将所有关键字为同义词的记录存储在一个单链表中,称这种表为同义词子表,在散列表中只存储所有同义词子表的头指针。4.公共溢出区法。将所有冲突的关键字建立了一个公共的溢出区来存放。

有关散列表查找实现的代码及其分析,可以参考《大话数据结构》P365-P367的内容,介绍得通俗易懂。

猜你喜欢

转载自blog.csdn.net/woshilingdaoren/article/details/50422181
今日推荐