如何使用java实现Open Addressing
JAVA 实现 使用 如何 open
2023-06-13 09:16:03 时间
你好! 我们这里总共向您提供三种open addression的方法,分别为linear probing、quadratic probing和double hashing。
Linear ProbingLinear probing是计算机程序解决散列表冲突时所采取的一种策略。散列表这种数据结构用于保存键值对,并且能通过给出的键来查找表中对应的值。Linear probing这种策略是在1954年由Gene Amdahl, Elaine M. McGraw,和 Arthur Samuel 所发明,并且最早于1963年由Donald Knuth对其进行分析。
public static void main(String ] args) { int N = 15; int ] A = new int int ] Keys = {5, 9, 12, 24, 31, 40, 47, 53, 62, 71}; for (int i = 0; i Keys.length; i++) { int j = 0; int Position = Keys i] % N; while (A Position] != 0) { j = j + 1; Position = Keys i] % N + j; A Position] = Keys for (int i = 0; i A.length; i++) { System.out.println(A i]);Quadratic Probing
Quadratic probing是计算机程序解决散列表冲突时所采取的另一种策略,用于解决散列表中的冲突。Quadratic probing通过获取原始哈希索引并将任意二次多项式的连续值相加,直到找到一个空槽来进行操作。
public static void main(String ] args) { int N = 15; int ] A = new int int ] Keys = {5, 9, 12, 24, 31, 40, 47, 53, 62, 71}; for (int i = 0; i Keys.length; i++) { int j = 0; int Position = Keys i] % N; while (A Position] != 0) { j = j + 1; Position = (Keys i] % N + j*j) % N; A Position] = Keys for (int i = 0; i A.length; i++) { System.out.println(A i]);Double Hashing
Double hashing是计算机程序解决散列表冲突时所采取的另一种策略,与散列表中的开放寻址结合使用,通过使用密钥的辅助哈希作为冲突发生时的偏移来解决哈希冲突。具有open addressing的double hashing是表上的经典数据结构。
public static void main(String ] args) { int N = 15; int ] A = new int int ] Keys = {5, 9, 12, 24, 31, 40, 47, 53, 62, 71}; for (int i = 0; i Keys.length; i++) { int j = 0; int Position = (Keys i] % N + (13 - (Keys i] % 13)) * j) % N; while (A Position] != 0) { j = j + 1; Position = (Keys i] % N + (13 - (Keys i] % 13)) * j) % N; A Position] = Keys for (int i = 0; i A.length; i++) { System.out.println(A i]);
2019-06-17
原创文章,转载请注明: 转载自并发编程网 ifeve.com本文链接地址: 如何使用java实现Open Addressing
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/60286.html
MD相关文章
- java 实现 按位异或_Java 按位异或的性质及其妙用
- java实现万年历[通俗易懂]
- Java 中的对象池实现
- 【java实现网址转换为二维码】「建议收藏」
- java 测试程序代码运行时间过长_Java测试
- 【Groovy】Groovy 代码创建 ( 使用 Java 语法实现 Groovy 类和主函数并运行 | 按照 Groovy 语法改造上述 Java 语法规则代码 )
- 策略新策略:使用Redis来实现Java过期失效(redisjava过期)
- 类使用Java实现Redis中键值对的过期操作(redisjava过期)
- Redis搭配Java实现数据过期(redisjava过期)
- 机制 文章标题:使用Java实现Redis过期机制(redisjava过期)
- 机制使用Redis实现Java高效的过期机制(redisjava过期)
- 缓存利用Redis实现Java过期缓存策略(redisjava过期)
- 策略使用Redis与Java实现的过期策略(redisjava过期)
- 清理Redis Java过期数据的自动清理实现(redisjava过期)
- 机制使用Java和Redis实现过期机制(redisjava过期)
- 处理使用Java实现Redis过期时间管理(redisjava过期)
- 策略Java使用Redis实现过期策略(redisjava过期)
- Java文件在Linux系统中的使用(java文件linux)
- Java编程实现MySQL数据库连接(java连mysql数据库)
- 从Java到Oracle轻松操作数据库(java写oracle库)
- Java使用选择排序法对数组排序实现代码
- Java实现显示指定类型的文件
- java使用list实现数据库的like功能
- Java中使用数组实现栈数据结构实例