【发布时间】:2019-08-07 03:05:31
【问题描述】:
我现在学习的数据结构和算法课程是对算法工作原理的大量纸笔理解,但很少有实际编码。我是一个编程菜鸟,所以这对你们中的一些人来说可能是一个愚蠢的问题。
从概念上讲,我了解散列,以及不同方法的原因,但不知道如何编写此分配。
基本上我们可以使用任何我们想要的源代码。书中的代码是http://users.cis.fiu.edu/~weiss/dsaajava3/code/SeparateChainingHashTable.java和http://users.cis.fiu.edu/~weiss/dsaajava3/code/QuadraticProbingHashTable.java
当使用这些代码中的任何一个时,我似乎无法将键插入表中。我正在使用这个块插入:
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(99999);
for (int i = 0; i < 100; i++) {
H.insert(""+randomInt);
}
这似乎并没有实际向表中插入任何内容,但是,尽管插入量很大,但大小保持不变。 另外,我不知道如何确定需要多少探针。
【问题讨论】:
-
请注意:由于您在循环外部调用随机生成器,因此您将始终使用相同的数字进行操作。
-
hashing table到底是什么?好像和Java的HashTable不一样。 -
是的,我的意思是哈希表。 PM 77,这有帮助,表大小现在是正确的。不幸的是,我仍然不确定如何确定发生的探测数量
-
Java 的
HashTable类既没有定义也没有继承insert方法。它使用put添加新数据。向hashtable添加数据时,需要提供2 个参数:key 和value。 -
探测数量是什么意思?我认为这个哈希表只是为了制作列表列表,看看它如何通过使用不同的哈希方法将数据划分到单独的单元格中。
标签: java hash quadratic probing