【数据结构与算法】哈希表
来源:互联网 发布:cosplay的软件 编辑:程序博客网 时间:2024/06/06 00:41
哈希表是一种查询速度非常快的数据结构,通常的数据结构比如链表,查询速度都会与数据结构的大小有关,而哈希表则是O(1)的速度,基本接近于常量。
1,大致思路:
*采用数组作为容器,因为访问数组只要给定了下标就能立即得到数据,速度很快,不存在遍历查相等的问题
*对于要存取的数据,通常都会有关键字,用于检索容器中的数据,这个很好理解,类似于数据库持久层中的primary key的概念。现在为了查询速度,就要把数据存放于数组中,那么必须为存入的数据指定下标才行。也就是一个从key到index映射。key的类型不做限定,可以使int或者string。这个映射叫做哈希函数,哈希函数必定会涉及两个过程:
(1)将关键字转化为数字,如果是string可以考虑通过string的ascii码,采取平方取中发,再取余。
(2)将数字压缩,使其小于数组.length,这个可以通过取余函数实现。
2,冲突:
就拿采用了取余函数作为哈希函数的情况来说,可能两个不同的关键字会得到相同的下标,这就是冲突。处理冲突有很多方法,比如开放地址法和拉链法:
*开放地址法:先设置一个偏移量,一旦发生冲突,就要往加一个偏移量的下标侦测,如果没有数据,那么就可以在这个位置添新的数据,如果已有数据,那么继续增加偏移量。相应的在查询数据的时候,就要先看index处有没有数据,如果没有,返回null,如果有,还要看数据的key和要查询的key是否相同,如果相同,那么返回这个数据项,如果不同,那么继续查加偏移量的下标的数据,再次继续上面的过程。
*拉链法:数组的index存一个指针或者链表表头,用于指向下标为index的全部数据组成的链表
- 【数据结构与算法】哈希表
- 【数据结构与算法】哈希表
- 数据结构与算法分析:哈希表
- 【数据结构与算法07】哈希表
- 【数据结构与算法】初探哈希表
- 数据结构与算法 -- 算法
- 【数据结构与算法】浅谈数据结构与算法
- 【数据结构与算法】【Some】数据结构与算法
- 数据结构笔记-----数据结构与算法
- 【数据结构与算法】数据结构备忘
- (5)数据结构与算法 ---- 哈希表总结
- 经典数据结构与算法(五)-哈希表
- 浅析数据结构与算法11--哈希表
- 数据结构与算法学习笔记--哈希表
- 数据结构与算法学习-哈希表入门
- Java数据结构与算法《十五》哈希表
- 数据结构与算法07 之哈希表
- java数据结构与算法-线性探测哈希表
- BroadcastReceiver
- oracle实现"limit"功能
- 献给和我合作的过得前端童靴们:jquery源码分析--核心函数(使用函数作为参数创建jQuery对象)
- 如何反编译Android 5.0 framework http://www.csdn.net/article/2015-12-21/2826527
- JDBC 连接各种数据库的字符串
- 【数据结构与算法】哈希表
- 重用Activity activity task taskAffinity
- iOS开发之 AES+Base64数据混合加密与解密
- Android 文件操作心得体会
- HTTP协议详解
- Spring常用注解@Component、@Controller、@ Service、@ Repository......
- 软件工程
- Vs2012 创建后仍要求创建项目解决办法
- java归并算法及其优化