算法+数据结构+Hash

1.最好的复杂度:
只有无冲突的hash table复杂度才是O(1),这是最好的情况。一般是O(c),c为哈希关键字冲突时查找的平均长度。故答案选A.

  1. 若使用H(K)=K%9作为散列函数,则散列地址为1的元素有()个
    散列函数
  2. 散列的基本思想是以结点的关键码作为自变量,通过散列函数将其映射到记录的存储地址。有时不同的关键码值经过同一散列函数计算后形成相同的存储地址,产生碰撞现象。由于处理碰撞的代价较大,应尽量避免。这就要求散列函数在作用于各记录关键码后的取值能同等均匀在存储空间上。
    4.散列解决冲突的方法

Hash 表的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与装填因子(表中记录数与表长之比)的大小成正比,即装填得越满越容易发生冲突, Ⅰ 错误。 Ⅱ 显然正确。采用合适的处理冲突的方式避免产生聚集现象,也将提高查找效率,例如用拉链法解决冲突时就不存在聚集现象,用线性探测法解决冲突时易引起聚集现象, Ⅲ 正确。
Ⅰ .增大装填(载)因子
Ⅱ .设计冲突(碰撞)少的散列函数
Ⅲ .处理冲突(碰撞)时避免产生聚集(堆积)现象

开放地址法是当发生冲突时,使用某种探查技术在散列表中形成一个探查序列,按照这个序列逐个单元查找,直到找到合适的位置。开放地址法有以下探查技术:
1.线性探查法:其实就是当发生冲突时,从该冲突位置逐个向后查找,类似于循环数组,直到找到合适的位置或者找遍整个表都未找到合适的位置。这个方法的缺点是易发生堆聚现象,堆聚就是存入哈希表的数据在表中连成一片。
2.线性补偿探测法
3.随机探测:将步长改为随机数,这样使不同的关键字具有不同的探测顺序,可以有效避免堆聚。
具体细节来自http://blog.csdn.net/lightty/article/details/11191971
线性探测法使得大量元素在相邻地址出现“聚集”现象,降低效率。主要是解决冲突算法选择不好,如果选择平方探测法,则可以避免堆积问题!

线程安全的map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?
HashMap,TreeMap是线程不安全的。 HashTable 和 ConcurrentHashMap 都是线程安全的。同时Collection类还提供了synchronized()方法,使得线程安全。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、散列的概念 散列方法的主要思想是根据结点的关键码值来确定其存储地址:以关键码值K为自变量,通过一定的函数关系h...
    SeanMa阅读 64,661评论 1 30
  • 9.3.3 快速排序   快速排序将原数组划分为两个子数组,第一个子数组中元素小于等于某个边界值,第二个子数组中的...
    RichardJieChen阅读 5,848评论 0 3
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,426评论 0 13
  • 这是从图书馆借来的一本绘本。 小狐狸和妈妈在一起,冬天来了,小狐狸第一次看到雪,它觉得好冷,妈妈说那就去买一副手套...
    米米心臻阅读 8,791评论 0 0
  • 太虚可曾慕金裘 道多舛 思多忧 门儿心上 秋意几时休 妙舞清歌寄烟柳 何妨醉 以字酬 空得小阕窥才尤 只恨恨 君去...
    旒凪阅读 1,639评论 0 0

友情链接更多精彩内容