Java 如何将随机整数插入哈希表?
我现在学习的数据结构和算法类是关于算法工作原理的大量书面理解,但实际编码很少。我是个编程高手,所以这对你们中的一些人来说可能是个愚蠢的问题 从概念上讲,我理解散列,以及不同方法的原因,但是我不知道如何编写这个赋值 基本上,我们可以使用我们想要的任何源代码。书中的代码是和 使用这两种代码时,我似乎很难将键插入表中。我正在使用此块插入:Java 如何将随机整数插入哈希表?,java,hash,quadratic,probing,Java,Hash,Quadratic,Probing,我现在学习的数据结构和算法类是关于算法工作原理的大量书面理解,但实际编码很少。我是个编程高手,所以这对你们中的一些人来说可能是个愚蠢的问题 从概念上讲,我理解散列,以及不同方法的原因,但是我不知道如何编写这个赋值 基本上,我们可以使用我们想要的任何源代码。书中的代码是和 使用这两种代码时,我似乎很难将键插入表中。我正在使用此块插入: Random randomGenerator = new Random(); int randomInt = randomGenerator.nextInt(999
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(99999);
for (int i = 0; i < 100; i++) {
H.insert(""+randomInt);
}
Random Random generator=new Random();
int randomInt=randomGenerator.nextInt(99999);
对于(int i=0;i<100;i++){
H.插入(““+randomInt”);
}
这似乎并没有向表中实际插入任何内容,但是,尽管插入了大量内容,表的大小仍然保持不变。
此外,我不知道如何确定需要多少探针
Random randomGenerator = new Random();
for (int i = 0; i < 100; i++) {
int randomInt = randomGenerator.nextInt(99999);
H.insert(""+randomInt);
}
如果我理解正确:
这个方法正在执行探测,是吗?因此,您必须计算在两个选项中调用此方法的次数:复制和不复制。如果添加的当前元素重复且为两个整数,请使用一些标志。在此方法中,为检查标志添加if
,并增加一个计数器。您将拥有多个探测器
编辑:
[LIN np]:非素数表大小为1000的线性探测[LIN-p]:
基本表大小为1019的线性探测。注意,1019是
最小素数(1000),即大于1000的最小素数。
[QDR-p]:素数表大小为1019的二次探测[DBL-p]:
具有基本表大小1019和冲突解决方案的双哈希
对质数97进行哈希运算
您必须使用使用探测的哈希表,并测试探测量(平均值)。在公共类QuadraticProbingHashTable中有二次探测算法
这是
您必须在哈希表中实现这一点,并检查它将被使用多少次。我认为它会以某种方式显示它产生了多少碰撞。快乐编码。二次算法完成后,只需设置前提条件即可(硬编码起始值为1019)。请注意:由于您在循环外部调用随机生成器,因此始终使用相同的数字进行操作。哈希表是什么?它似乎不同于Java。是的,我指的是哈希表。PM 77,这很有帮助,表大小现在是正确的。不幸的是,我仍然不确定如何确定发生在Djava的哈希表
类中的探测数量,该类既不定义也不继承插入
方法。它使用put
添加新数据。向哈希表添加数据时,需要提供两个参数:键和值。您所说的探测量是什么意思?我认为这个哈希表只是用来列出列表,看看它如何通过使用不同的哈希方法将数据划分到不同的单元格中。什么是H
,你怎么知道它支持insert
方法和一个String
参数?H是这个哈希表中的一个,它们支持insert。非常感谢,这稍微澄清了一些事情。该开始工作了!hashmaps有许多实现。就像您只使用键一样,值对您来说并不无关。
/**
* Method that performs quadratic probing resolution.
* @param x the item to search for.
* @return the position where the search terminates.
*/
private int findPos( AnyType x )
{
int offset = 1;
int currentPos = myhash( x );
while( array[ currentPos ] != null &&
!array[ currentPos ].element.equals( x ) )
{
currentPos += offset; // Compute ith probe
offset += 2;
if( currentPos >= array.length )
currentPos -= array.length;
}
return currentPos;
}