程序员面试金典: 9.13 C和C++ 13.2 比较并比对散列表和STL map。散列表是如何实现的?如果输入的数据量不大,可以选用哪些数据结构替代散列表?
2017-01-13 14:33
603 查看
问题:比较并比对散列表和STL map。散列表是如何实现的?如果输入的数据量不大,可以选用哪些数据结构替代散列表? 分析: 散列表HashMap:散列表是一种将待散列对象经过某种哈希算法生成一个整型值,然后存储该整型值对应下标的数组元素为指定值,它的插入,查找时间复杂度都是常数时间。 散列表的插入和查找速度要快于STL map。【补充:本质是链表数组】 一种散列表的实现方式是:哈希+拉链法来实现。将待存储的对象通过哈希算法计算出的哈希值为h,散列表总长度为n,那么存放在散列表的 h % n = p位置, 在p处建立一个链表,存放所有在散列表中下标为p的对象。 STL map :本质上是红黑树,插入,查找的时间复杂度都是O(N*logN),而红黑树是二叉查找树满足了更为苛刻的条件,【补充:将键值对插入二叉查找树,平衡】 当输入的数据量不大,也就是在小数据中实现插入和查找的快速实现,可以用平衡的二叉查找树也就是STL map或二叉树来代替。
相关文章推荐
- 每日刷题(2015/6/21):对比哈希表和STL map。哈希表是怎么实现的?如果输入数据规模不大, 可以使用什么数据结构来代替哈希表。
- 比较并对比散列表和STL map。散列表是如何实现的?
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何用c++实现四叉数的数据结构(一)
- 数据结构-散列表(Hash Table)的C++实现模板
- c++第八周【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何在C++中实现对输入数是否为小数的判断
- 搜狗输入法 输入 图表情的时候, 我们用 autoLink ="web" 来实现 , 如果是 链接可以点击;
- 在页面中,我们经常看到,一个button按钮,如果属标点击,就会触发一个窗口的显示,如果二次点击并可以隐藏,那么如何通过JAVA配合html来实现这一功能呢?
- 关于输入框input如何实现只可以选择不可以键盘输入
- [C++]数据结构:散列表(哈希表)、散列函数构造、处理散列冲突
- 如何实现在屏幕中可以输入负数
- c++ 如何用一个函数实现两个字符串的比较
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如果主存中的某页正在与外部设备交换信息,缺页中断时可以将这一页淘汰吗?为了实现正确的页面调度,应如何扩充页表的功能?
- 如何实现在内网输入公网IP地址可以直接访问内网服务器
- C++如何实现哈希数据结构——map Library
- 老大要求把Word文档加上公司的标识,公司名文字或者logo图片都可以,但要求是用电脑打开(电子文档时)能看见标识,如果打印出来(纸质文档)就不显示出来,如何实现?
- C语言数据结构之单向链表(已经调试可以实现相应的功能了,可是还是有几个问题现在还是不大理解,希望大家能够一起探讨)