数组里面有10万个数据 取第一个元素和第10万个元素的时间相差多少?
数组可以直接根据索引取的对应的元素,所以不管取哪个位置的元素的时间复杂度都是 O(1)
得出结论:消耗时间几乎一致,差异可以忽略不计
原因:
JavaScript 没有真正意义上的数组,所有的数组其实是对象,其“索引”看起来是数字,其实会被转换成字符串,作为属性名(对象的 key)来使用。所以无论是取第 1 个还是取第 10 万个元素,都是用 key 精确查找哈希表的过程,其消耗时间大致相同。
Chrome 浏览器 JS 引擎 V8 中,数组有两种存储模式,一种是类似 C 语言中的线性结构存储(索引值连续,且都是正整数的情况下),一种是采用 Hash 结构存储(索引值为负数,数组稀疏,间隔比较大)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 算法题之「移动零」
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论