数组的访问效率为什么高于链表?
Python与算法社区
共 591字,需浏览 2分钟
·
2020-08-19 12:13
目前刷题到Day60后,过去10天集中强化复习这60天所学。反复揣摩旧知识,并从中理解出新的东西,也是很必要的,也是一种能力。
就拿我们最熟悉的数组来说吧,你想过为什么它的访问效率高于链表等数据结构吗?书本上只告诉我们结论:数组的访问效率更好,鲜有告诉我们为什么,更别想获得书作者本人对其的理解了。
答案倒还是其次。不知道大家在学习的时候提出过这个问题吗?能提出这个问题说明你也蛮优秀。实话说,这个问题在面试中也会常被问到,肯定有答不上来的候选者。
谈谈我的浅见。
数组在内存中是按照顺序存储的,每个元素出现顺序与我们可见的index,也就是索引一一对应。这就意味着,只要知道其中一个元素地址,便能在O(1)时间内随机访问任意一个元素。
而这种能力以链表为代表的非顺序存储模型是无法具备的。我们都知道链表某个节点引用了前驱或后继节点,因此它只能一次移动一步,像蜗牛似的爬到想要访问的节点。如果已知节点和待查找的节点中间间隔N个元素,它就得移动N步。
综上,数组能一步到位,链表N步到位,结论:数组随机访问能力强于链表。若有用,欢迎点赞或转发支持。
评论