没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
02丨数据结构原理:Hash表的时间复杂度为什么是O(1)?
2019-11-20 李智慧
后端技术基础详解
进入课程
讲述:李智慧
时长 12:54 大小 11.83M
大概十年前,我在阿里巴巴工作的时候,曾经和另一个面试官一起进行一场技术面试,面试
过程中我问了一个问题:Hash 表的时间复杂度为什么是 O(1)?候选人没有回答上来。面
试结束后我和另一个面试官有了分歧,我觉得这个问题没有回答上来是不可接受的。而他则
觉得,这个问题有一点难度,回答不上来不说明什么。
因为有了这次争执,后来这个问题成了我面试时的必考题。此后十年间,我用这个问题面试
了大约上千人,这些面试经历让我更加坚定了一个想法:这个问题就是候选人技术水平的一
个分水岭,是证明一个技术人员是否具有必备专业技能和技术悟性的一个门槛。这个槛过不
去是不可接受的。
下载APP
为什么呢?我很难相信,如果基本的数据结构没有掌握好,如何能开发好一个稍微复杂一点
的程序?
要了解 Hash 表,需要先从数组说起。
数组
数组是最常用的数据结构,创建数组必须要内存中一块连续的空间,并且数组中必须存放相
同的数据类型。比如我们创建一个长度为 10,数据类型为整型的数组,在内存中的地址是
从 1000 开始,那么它在内存中的存储格式如下。
由于每个整型数据占据 4 个字节的内存空间,因此整个数组的内存空间地址是 1000~
1039,根据这个,我们就可以轻易算出数组中每个数据的内存下标地址。利用这个特性,
我们只要知道了数组下标,也就是数据在数组中的位置,比如下标 2,就可以计算得到这个
数据在内存中的位置 1008,从而对这个位置的数据 241 进行快速读写访问,时间复杂度为
O(1)。
剩余15页未读,继续阅读
资源评论
Java码库
- 粉丝: 1455
- 资源: 3918
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功