一. 散列表是什么

 是包含映射关系的一种数据结构,可以提高查找效率。

二. 散列函数

 1)必须是一致的。假设输入一个单词“banana”,映射的数字是1,那么以后每次输入banana都要映射到数字1,否则散列表就没用处了。

 2)应该把不同的输入映射到不同的输出。如果无论什么输入都映射输出数字1,那么就不是好的散列函数。理想的情况是,任何一个输入,都有独一无二的映射输出。

三. 冲突

 将不同的键映射到不同的位置,实际上没有这样的散列函数可以一步到位。这就会导致冲突,也就是不同的键,映射到了同一个位置。怎么办呢?办法很多,这里说一个:如果两个键映射到了同一个位置,那么就在这个位置建一个链表,依次存储键值对。当然,这也不是完美的办法:假设有一串字母a开头的单词,它们分别对应不同的数值,但他们映射的位置却都是一样的,那么结果就是在内存的一个固定位置上建立了一个很长的链表,这样的话查找起来仍然效率不高。所以,对于散列函数,要注意:

1)理想的散列函数可以把键均匀的映射到散列表的不同位置。

  2)理想的散列函数会使得在一个位置建立起来的链表不会变得不可接受的长。

随机推荐

  1. git 使用 总结

    比较好的教程 http://backlogtool.com/git-guide/cn/intro/intro1_2.html 1.git流程图 2.git 新建仓库 git init git clon ...

  2. 【接口测试】jmeter的使用

    学习地址: https://ke.qq.com/webcourse/index.html#course_id=89002&term_id=100088372&taid=15345918 ...

  3. C#之数组

    什么是数组?数组是一种数据结构,包含同一个类型的多个元素.数组的声明:int[] myIntArray; 注:声明数组时,方括号 ([]) 必须跟在类型后面,而不是变量名后面.在 C# 中,将方括号放 ...

  4. centos6.5安装mongodb

    搜索正面五个文件,由于MongoDB的redhat国外镜像访问非常慢,下载安装suse版本并安装: mongodb-org-2.6.6-1.i686.rpm mongodb-org-mongos-2. ...

  5. IOS_OC_地图与定位

    知识点介绍 一. 定位 实现一次定位 CLLocation对象介绍 实现持续定位 请求用户授权 二. 地理编码 正地理编码 反地理编码 三. 地图的基本使用 显示用户位置 设置地图显示类型 根据用户位 ...

  6. bzoj 1876 [SDOI2009]SuperGCD(高精度+更相减损)

    1876: [SDOI2009]SuperGCD Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2384  Solved: 806[Submit][Sta ...

  7. 通过 Xshell 5 连接 centOS 7 服务器

    一. 在安装好了centOS 7 的服务上,打开终端 运行 ip -s addr 命令 获取服务的IP地址 [root@localhost ~]# ip -s addr1: lo: <LOOPB ...

  8. jQuery 学习小结

    1,jQuery是一个简单的JavaScript库,提供了一系列辅助函数:以下简称jq; 使用jq时,通常将jq代码放到head部分的事件处理方法中,也可以将其单独写出 .js 文件,引入:但无论哪种 ...

  9. win10:家庭版开启组策略

    1.新建一个txt文件 2.复制以下内容到txt文件 @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Mi ...

  10. 《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结

    背景: 随着开发团队规模不断发展壮大,在人员增加的同时也带来了协作成本的增加,业务项目越来越多,类型也各不相同.常见的类型有组件类.活动类.基于React+redux的业务项目.RN项目.Node.j ...