package lirui.find;import java.util.LinkedList;/*** Created by lirui on 14-8-13.* 用拉链法实现哈希算法的运算*/
public class MyHashSearch2 {public static final int SIZE = 10;public static MyHashElement[] hashtable = new MyHashElement[SIZE];// 记录hash表中的数量。public static int count = 0;// 哈希函数  h(key)= key mod ppublic static int hashFunction(int key, int p) {return key % p;}// 将key插入到哈希表中public static void insertHT(MyHashElement[] hashTable,int key, int p) {int adr;adr = hashFunction(key, p);// 当没有冲突发生的时候,说明还没有存过。if (hashTable[adr] == null){hashTable[adr] = new MyHashElement();hashTable[adr].setKey(new LinkedList<Integer>());hashTable[adr].getKey().add(key);} else {// 当发生冲突,说明已经有链表了,则直接存入。hashTable[adr].getKey().add(key);}count++;}/*** @param hashTable* @param x          要存入哈希表中的数组* @param p          哈希参数*/public static void createHT(MyHashElement[] hashTable, int[] x, int p) {int i, length = x.length;for (i = 0; i < length; i++) {insertHT(hashtable, x[i], p);}}// 查找/**** @param hashtable* @param key 待查的数字* @return 返回地址值*/public static int searchHT(MyHashElement[] hashtable,int key,int p){int address = hashFunction(key,p);if (hashtable[address] == null){return -1;} else {// 从链表里搜索if (hashtable[address].getKey().contains(key)){return address;} else{return  -1;}}}public static void main(String[] args) {int[] x = {7, 8, 30, 11, 18, 9 ,14};createHT(hashtable,x,7);for (MyHashElement hashElement : hashtable) {if (hashElement !=null){for (Integer i : hashElement.getKey()) {System.out.print(i + "      ");}System.out.println();}}System.out.println(searchHT(hashtable,14,7));System.out.println(searchHT(hashtable,2333,7));}
}class MyHashElement {LinkedList<Integer> key; //元素关键字,是一个链表String info; // 元素信息public void setKey(LinkedList<Integer> key) {this.key = key;}MyHashElement() {}public LinkedList<Integer> getKey(){return  key;}MyHashElement(LinkedList<Integer> list, String info) {this.key = list;this.info = info;}
}

自己写的用拉链法实现哈希算法的运算

用拉链法实现哈希算法的运算相关推荐

  1. 拉链法解决哈希冲突的方式和几种常见的散列函数

    本文探讨拉链表解决哈希冲突的方式和几种常见的散列函数. 首先,什么是散列表? 对于一个数组,我们在O(1)时间复杂度完成可以完成其索引的查找,现在我们想要存储一个key value的键值对,我们可以根 ...

  2. Hash 浅谈哈希算法

    哈希表 哈希表其实就是建立和存储一种映射关系 离散化.桶排序就是一种简单数值哈希 常见的哈希方法: 除法哈希法  hash(key) = keymod M(M为素数) 乘法哈希法  hash(key) ...

  3. 哈希算法python_哈希算法(Python代码实现)

    1.常见的数据查找算法: 众所周知,顺序查找是最简单的查找方式,但要将所有数据遍历一遍所以效率相对较低,对大数据量的査找问题显然不行.二分查找的查找效率虽然非常高但是数据必须有序,而对数据排序通常需要 ...

  4. 06 数据结构与算法之哈希表(拉链法) (C语言实现)

    注:只给出C语言实现代码,涉及到的数据结构相关概念请自行阅读相关书籍或参考其他博文: 将哈希表理解为一个顺序表,顺序表里面存储的是一个链表(拉链法解决碰撞) 注:(hash & 0x7FFFF ...

  5. 哈希表-拉链法及应用举例

    哈希表存储结构: 1.开放寻址法 2.拉链法 哈希表的主要作用: 把一个较大(0-10^9 )的数据映射到较小(0-N(N一般为10^5 到 10^6))的数据 哈希函数:可以把一个从-10^19 到 ...

  6. 哈希表(闭散列、拉链法--哈希桶)

    哈希表,也称散列表,是一种通过key值来直接访问在内存中的存储的数据结构.它通过一个关键值的函数(被称为散列函数)将所需的数据映射到表中的位置来访问数据. 关于哈希表,主要为以下几个方面: 一.哈希表 ...

  7. C语言哈希表的简单实现——数组+链表(拉链法)

    C语言哈希表的简单实现--数组+链表(拉链法) 1.哈希表简介 哈希表详细介绍可以参考这篇文章 2.哈希表拉链法实现 2.1完全由本人思路实现,如有错误,欢迎批评指正 哈希声明文件hash.h /* ...

  8. 除留余数法构造哈希表_哈希表算法原理

    基本概念 哈希表(Hash Table)是一种根据关键字直接访问内存存储位置的数据结构.通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数. 哈 ...

  9. 九, Java实现哈希表(拉链法, 数组+单链表)

    九, 哈希表 9.1 哈希表的定义和特点 散列表(Hash table, 也叫哈希表),是根据关键码 - 值(Key - value)而直接进行访问的数据结构. 也就是说, 它通过把关键码 - 值映射 ...

最新文章

  1. 1060. [ZJOI2007]时态同步【树形DP】
  2. Linux基本命令之文件查找、检索
  3. C# list集合 重复元素 索引_C#学习笔记12--集合/索引器/扩展
  4. dict是python语言的内置对象_Python内置了字典:dict的支持
  5. kafka 出现Java heap space的解决方法
  6. 安装及管理程序(yum搭建本地源,了解rmp命令,查询卸载软件包,编译安装的过程)
  7. python中带*(单星号)的变量和**(双星号)的变量
  8. C语言#define宏定义可能注意不到的地方
  9. TensorFlow2-操作
  10. UVA 10047 - The Monocycle BFS
  11. 前端做聊天软件的功能难点
  12. 又撞了!特斯拉司机自动驾驶中看电影 直接撞向警车:画面太囧了
  13. java 执行js selenium_如何在Selenium WebDriver Java中使用JavaScript
  14. lte和4g有什么区别
  15. 多点触控与多鼠标支持
  16. Mac下载m3u8视频
  17. sparksql 与flinksql 建表 与 连表记录
  18. php 手写签批 手机办公_好签原笔迹手写签批SDK
  19. 人脸识别经典开源项目
  20. hihoCoder--139周 买零食

热门文章

  1. jmeter启动警告项解决方案
  2. python爬虫 智联招聘 工作地点
  3. buildroot httpd php
  4. 解决eclipse ctrl+鼠标左键不能用
  5. 运动目标检测ViBe算法
  6. Android强制设置横屏或竖屏
  7. 聊聊flink的HistoryServer
  8. electron打包可选择安装位置,可自动更新
  9. Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
  10. C# richtextbox 自动下拉到最后 方法 RichTextBox读取txt中文后出现乱码