c++ 哈希表(hash表)
来源:互联网 发布:软件授权书是怎么回事 编辑:程序博客网 时间:2024/04/28 19:11
一、定义
Hash表,也称散列表。一般应用于有大量“动态”的插入(删除)和查找操作的一类问题。(如果是“静态”的,通常可以先对数据排序,查找时就可以用“二分查找”)
虽然可以用“平衡树”之类方法,但实践中,用hash表更简单实用。
普通的查找方法建立在“比较”的基础上,查找的效率与比较次数密切相关。
hash的思想是能直接找到需要的元素,因此必须在元素的存储位置和它的关键字之间建立一确定的对应关系f,使每个关键字和存储结构中一个(几乎)唯一的存储位置相对应。(按我的理解就类似于高中数学中的映射)
注:虽然存储方式多样,但由于我是个OIer,就都用数组模拟了
e.g.本年级每个学生的记录中都有一个关键字:学号。学号是0000~9999之间的,每个学生学号唯一。因此就可以用函数f(key)=key 得到唯一的地址。因此可以直接(O(1))找到对应的位置(数组下标),插入、查找、删除操作都是O(1)。
(类似于计数排序法)
Hash函数:上面的记录中关键字key和存储位置(这里是数组下标)之间建立的对应关系函数f(key)。称这个对应关系f为哈希函数,按这个思想建立的表为哈希表(又称为杂凑法或散列表)。
冲突:通常的hash函数不是一一对应关系。普通情况下hash函数很可能会出现keyi≠keyj,f(keyi)=f(keyj) 的现象。也就是几个关键字可能对应同一个“地址”。
这就叫作冲突。
1 0
- Hash表(哈希表)
- C/C++ 实现哈希表(hash table)
- C/C++ Hash表
- Hash 表详解(哈希表)
- c++ 哈希表(hash表)
- hash表 c语言实现
- 再写 Hash (C++)
- HASH表的实现(拉链法) - C/C++
- c-Hash
- c hash
- 哈希表(散列表),Hash表漫谈
- Hash表(哈希表、散列表)
- Hash Table(哈希表)
- HASH(哈希表)学习
- 哈希表(Hash Table)
- 哈希表(Hash table)
- 哈希表(Hash Table)
- C语言 打造最快的Hash表
- 22- mysql不能创建自定义函数
- RDD:基于内存的集群计算容错抽象
- UINavigationController 侧滑
- swift自学源码
- redis常用命令、常见错误、配置技巧等分享
- c++ 哈希表(hash表)
- JavaScript之表单
- libevent 使用
- Javascript学习笔记07——DOM
- 【Linux运维入门】Linux环境安装配置MongoDb及简单使用
- Eclisp背景颜色更改
- 海盗分金SQL优化杂谈
- 苹果支付 apple Pay
- 无聊时总结总结算法之08桶排序