好久没看数据结构了,现在也打不起精神来,翻了一下书,严蔚敏那本书。,以下是书的第9章,发现自己很多时候对知识的认识无法结构化和系统化,都是零散的,模糊的混乱的记忆,以后要有体系,

第9章 查找    
9.1 静态查找表
9.1.1 顺序表的查找
9.1.2 有序表的查找
9.1.3 静态树表的查找
9.1.4 索引顺序表的查找
9.2 动态查找表
9.2.1 二叉排序树和平衡二叉树
9.2.2 b-树和b 树
9.2.3 键树
9.3 哈希表
9.3.1 什么是哈希表
9.3.2 哈希函数的构造方法
9.3.3 处理冲突的方法
9.3.4 哈希表的查找及其分析

我们可以看到。哈希表 是查找这章的。

哈希表用来快速查找的,我们知道快速查找,在数据库中就是索引,在数据库中确实有hash索引,在hashmap中可以根据key快速查找,同时java中的hashcode是干什么用的?好了,什么事哈希表呢?

1.从数据扯起

数组中可以根据下表快速定位地址

假设 int  a[]={1,2,3,4};

我们立马可以通过a[0]获得1,根据下标快速的找到了第0个元素的位置。

2.哈希表的引入

1.哈希表就是一个数组。              数组要多大呢?如果当前数据增多了,当前数组不够用了咋办?如何扩张

2.根据key快速定位到数组的位置,如何定位(hash函数);在数组中key 就是 0,1,2。但是遗憾的是key并不是那么简单,比如 key是String类型呢?如何根据key快速找到它的位置呢?               如何定义一个hash函数。

总之将key转化为数组下标,这是最重要的。

3hash函数的设计方法

http://www.cnblogs.com/sooner/archive/2013/04/19/3031087.html

目的:要根据key尽可能的均匀的映射到数组中。

      1:平方取中法(知道就行)

  取关键字平方后的中间几位为哈希地址。

       2.除留余数法(==最常用的方法)

           通常来说,最后一步都用这个方法,index=key%p; 对数组长度取余数

        3、随机数法(知道就行)

              随机确定地址

  其他的自己查吧。

4.冲突解决(开放地址法和拉链法)

 (a)拉链法: 就是数组加链表 hashmap就是这样实现的

  (b)开放地址法:线性探测,和二次探测

http://www.cnblogs.com/dolphin0520/archive/2012/09/28/2700000.html

这是一个粗略的知识架构,后面细一点学习

  


  

 

 

转载于:https://www.cnblogs.com/hansongjiang/p/3828502.html

哈希(1) hash的基本知识回顾相关推荐

  1. 纸上谈兵: 哈希表 (hash table)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! HASH 哈希表(hash table)是从一个集合A到另一个集合B的映射(map ...

  2. Android 数据库知识回顾

    一.前言 二.效果预览 ​三.数据库与框架的基础使用 (1)第一道:原生数据库 (2)第二道:LitePal框架 (3)第三道:GreenDao框架 四.总结 五.Demo地址 六.内容推荐 一.前言 ...

  3. Nginx+Keepalived+LVS高可用集群----相关知识回顾

    1.原理回顾 1.1.集群知识回顾 集群特点: 1)高性能performance. 一些需要很强的运算处理能力比如天气预报,核试验等.这需要上千台计算器协同来完成这个工作的,共同分担计算任务. 2)价 ...

  4. 哈希(Hash)算法是一种单向密码体制(它是一个从明文到密文的不可逆的映射只有加密过程没有解密过程)

    https://www.cnblogs.com/xiaojq/p/11109634.html 简单解释:哈希(Hash)算法,即散列函数.它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只 ...

  5. [C#] C# 知识回顾 - 装箱与拆箱

    装箱与拆箱 目录 生活中的装箱与拆箱 C# 的装箱与拆箱 值类型和引用类型 装箱 拆箱 读者见解 生活中的装箱与拆箱    我们习惯了在网上购物,这次你想买本编程书 -- <C 语言从入门到放弃 ...

  6. 【springmvc+mybatis项目实战】杰信商贸-6.重点知识回顾

    1.重点知识回顾 Maven 1)覆盖仓库文件,实际企业开发,公司会架一个测试服务器,在测试服务器中架私服.我们开发人员的程序,都连接私服.当本地没有项目中要使用的jar,Myeclipse mave ...

  7. Java集合—哈希(hash)表

    原文作者: 原文地址: 1.哈希表的定义 这里先说一下哈希(hash)表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我 ...

  8. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  9. java知识回顾_Java7 –回顾

    java知识回顾 我开始写博客文章,介绍即将发布的Java8版本中的新增功能 ,并认为我将从快速回顾一下Java7带给我们的内容开始. Java7于2011年7月发布,被描述为"更具进化性而 ...

  10. java知识回顾_Java – 2012年回顾和未来预测

    java知识回顾 这篇文章将重点讨论2012年发生的大小事件,并展望2013年的一些未来预测.其中一些预测将是诚实的猜测,而另一些则将是诚实的猜测. 好吧,只要说我的"恶魔般"的一 ...

最新文章

  1. 2021年春季学期-信号与系统-第四次作业参考答案-第九小题
  2. CCSpriteBatchNode的使用
  3. php程序访问mysql数据实现查询_PHP+MySql实现后台数据的读取
  4. linux find命令mtime/atime/ctime +n -n n 全网最正确的总结
  5. Hxro将采用Solana作为第一层区块链,并过渡为完全去中心化的链上衍生品网络
  6. Linux上SQL Server合并复制
  7. IDEA 不识别的MAVEN 项目应如何处理
  8. sql统计不为空的字段数_SQL太难?你离完全理解SQL就差这10步!
  9. springboot自行车在线租赁管理系统毕业设计源码101157
  10. Manjaro安装以及美化教程
  11. 在线重建索引 oracle,ORACLE重建索引详解
  12. 笔记本设置WiFi热点命令操作
  13. python将数据做直方图_用python 制作直方图
  14. node爬取双马尾小姐姐图片
  15. Linux攻关之基础模块十 特殊权限
  16. getElementByClassName
  17. python的mapl画图y轴排_Python三维绘图之Matplotlib库的使用方法
  18. 小型直播系统系列-乐聊TV的开发(二)
  19. 计算机网络笔记---互联网的组成及三种交换方式
  20. 二叉排序树,平衡二叉树和哈夫曼树

热门文章

  1. 卷积神经网络 第三周作业 Keras+-+Tutorial+-+Happy+House+v1
  2. 基于Python的卷积神经网络和特征提取(Theano)
  3. Python基于迁移学习的交通信号识别实战【图像多分类任务】【实测准确度超过96.7%】
  4. Python实现中文转化为对应的拼音以及拼音转化为相应的中文
  5. Hive入门学习随笔(一)
  6. web自动化测试第6步:模拟鼠标操作(ActionChains)
  7. originos系统会基于鸿蒙开发吗,originos系统是安卓吗 originos系统什么时候更新[多图]...
  8. 形参和实参是什么_Java基础篇:什么是面向对象?(详解)
  9. 程序崩溃调试 Linux开启产生coredump文件
  10. 区块链 以太坊 入门知识