每日刷题(2015/6/21):对比哈希表和STL map。哈希表是怎么实现的?如果输入数据规模不大, 可以使用什么数据结构来代替哈希表。
来源:互联网 发布:淘宝小号购买网站 编辑:程序博客网 时间:2024/04/19 05:27
对比哈希表和STL map
在哈希表中,实值的存储位置由其键值对应的哈希函数值决定。因此, 存储在哈希表中的值是无序的。在哈希表中插入元素和查找元素的时间复杂度都是O(1)。 (假设冲突很少)。实现一个哈希表,冲突处理是必须要考虑的。
对于STL中的map,键/值对在其中是根据键进行排序的。它使用一根红黑树来保存数据, 因此插入和查找元素的时间复杂度都是O(logn)。而且不需要处理冲突问题。 STL中的map适合以下情况使用:
查找最小元素
查找最大元素
有序地输出元素
查找某个元素,或是当元素找不到时,查找比它大的最小元素
哈希表是怎么实现的
首先需要一个好的哈希函数来确保哈希值是均匀分布的。比如:对大质数取模
其次需要一个好的冲突解决方法:链表法(chaining,表中元素比较密集时用此法), 探测法(probing,开放地址法,表中元素比较稀疏时用此法)。
动态地增加或减少哈希表的大小。比如,(表中元素数量)/(表大小)大于一个阈值时, 就增加哈希表的大小。我们新建一个大的哈希表,然后将旧表中的元素值, 通过新的哈希函数映射到新表。
如果输入数据规模不大,我们可以使用什么数据结构来代替哈希表。
你可以使用STL map来代替哈希表,尽管插入和查找元素的时间复杂度是O(logn), 但由于输入数据的规模不大,因此这点时间差别可以忽略不计。
0 0
- 每日刷题(2015/6/21):对比哈希表和STL map。哈希表是怎么实现的?如果输入数据规模不大, 可以使用什么数据结构来代替哈希表。
- 程序员面试金典: 9.13 C和C++ 13.2 比较并比对散列表和STL map。散列表是如何实现的?如果输入的数据量不大,可以选用哪些数据结构替代散列表?
- 241 map 在什么情况下会发生死锁;stl 中的 map 是怎么实现的?
- effective STL - 尽量使用vector和string来代替动态分配的数组(char *)
- Effective STL 13 尽量使用vector和string来代替动态分配的数组
- 搜狗输入法 输入 图表情的时候, 我们用 autoLink ="web" 来实现 , 如果是 链接可以点击;
- 比较并对比散列表和STL map。散列表是如何实现的?
- 怎么实现select可以下拉也可以输入的功能
- 使用STL::map来实现函数映射调用
- 《Effective STL》读书笔记七:Item 13:尽量使用vector和string来代替动态分配的数组 Item 14: 使用reserve来避免不必要的内存重分配
- 使用schtasks 代替 win xp里面的at命令,来实现任务计划和定时功能
- STL map 和 set的实现
- STL map和set的实现
- STL map 和 set的实现
- STL map 和 set的实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- cocos2d-x核心类剖析-cocos2d-x内存管理机制
- Debian Jessie 安装 迅雷(Xware)
- 精简点名
- LeetCode 112 Path Sum
- org.apache.jasper.JasperException: Unable to compile class for JSP 解决方法
- 每日刷题(2015/6/21):对比哈希表和STL map。哈希表是怎么实现的?如果输入数据规模不大, 可以使用什么数据结构来代替哈希表。
- Ubuntu 1204 安装中文输入法
- HDU2033 人见人爱A+B
- RabbitMQ源码解析前奏--AMQP协议
- 消息提醒、带声音提示、托盘图标闪烁
- Java设计模式之单例模式
- cocos2d-x核心类剖析-cocos2d-x定时器机制
- java基础—File类——获取C盘下的隐藏目录文件名称
- Android获取手机信息大全