扫码关注公众号

java数据结构之哈希hash
02-09
607观看
01

采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,因为这会影响以后的查找()

正确答案是A该方法的基本思想是:
将散列表T[0..m-1]看成是一个循环向量,若初始探查的地址为d(即h(key)=d),则最长的探

来自:哈希Hash-哈希Hash
02

既希望较快的查找又便于线性表动态变化的查找方法是()

正确答案是C希望较快而不是很快,并且希望便于动态变化,这个用C而不是D,如果哈希法的存储不是链式,一般的情况下随着关键字的增多,冲突频繁发生

来自:哈希Hash-哈希Hash
03

对在哈希法存储中,冲突指的是 ( )

正确答案是A1.哈希函数:哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表成为哈希表。基本思想:首先在元素的关键字K和元素的位置P之间建立一个对应关系f,使得P=f(K),其中f成为哈希函数。创建哈希表时,把关键字K的元素直接存入地址为f(K)的单元;查找关键字K的元素时利用哈希函数计算出该元素的存储位置P=f(K).创建哈希表时,把关键字K的元素直接存入地址为f(K)的单元;查找关键字K的元素时利用哈希函数计算出该元素的存储位置P=f(K).2.哈希冲突:当关键字集合很大时,关键字值不同的元素可能会映像到哈希表的同一地址上,即K1!=K2,但f(K1)=f(K2),这种现象称为hash冲突,实际中冲突是不可避免的,只能通过改进哈希函数的性能来减少冲突。

来自:哈希Hash-哈希Hash
04

若线性表(24,13,31,6,15,18,8)采用散列(Hash)法进行存储和查找,设散列函数为H(Key)=Key mod 11,则构造

正确答案是A解析:24取余11得13。冲突13

来自:哈希Hash-哈希Hash
05

hashmap经典八股文(百度面试)

默认数组长度是16,其实只要是2的次幂都行,至于为啥是16呢,这是个经验值问题,16这个长度最为常用。那为什么数组长度得是2的次幂呢?首先,一般来说,我们常用的Hash函数是这样的:index=HashCode(key)%Length,但是因为位运算的效率比较高嘛,所以HashMap就相应的改成了这样:index=HashCode(key)&(Length-1)。那么为了保证根据上述公式计算出来的index值是分布均匀的,我们就必须保证Length是2的次幂。解释:**2的次幂,也就是2的n次方,它的二进制表示就是1后面跟着n个0,那么2的n次方-1的二进制表示就是n个1。     **而对于&操作来说,任何数与1做&操作的结果都是这个数本身。也就是说,index的结果等同于HashCode(key)后n位的值,只要HashCode本身是分布均匀的,那么我们这个Hash算法的结果就是均匀的。

来自:哈希Hash-哈希Hash
06

说一下 HashMap 的实现原理?(百度面试题)

HashMap概述:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构:在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标)。如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾。如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。需要注意:Jdk1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)

来自:哈希Hash-哈希Hash
专栏
数据结构-哈希Hash-哈希Hash
3专栏
0课程
6 试题