美文网首页
为什么数组查询比链表要快?而插入删除比链表效率低

为什么数组查询比链表要快?而插入删除比链表效率低

作者: 许先森的许 | 来源:发表于2019-01-24 14:59 被阅读298次

问:为什么数组查询比链表要快?而插入删除比链表效率低

已知:

1、数据存储结构分为顺序存储、链接存储、索引存储、散列存储。
2、数组属于顺序存储,用一段连续的内存位置来存储。
3、链表属于链接存储,用一组任意的存储单元来存储,不要求物理上相邻。

抽象:

1、顺序存储可以想象成吃饭排队,每个人领的号都是按顺序来的,服务员只要喊号就里立即可以找到对应的人,新来的人都自动加到队尾,如果有人想插队,那么从他插队的位置后面所有的人都要挪动位置。
2、链接存储可以想象成手拉手做游戏,每个人只知道自己手拉的是谁,想要找到某个人必须从一个节点开始往一个方向按顺序一个一个查,直到查到这个人,新来的人可以插到任意两个人之间,只要原来的那两个人把手放开,和新来的拉起手即可,不需要其他人都跟着挪动。

查询涉及到CPU特性

处理速度由快到慢排序:
1、CPU寄存器
2、CPUL1缓存
3、CPUL2缓存
4、内存
5、硬盘

总结:

因为CPU缓存会读入一段连续的内存,顺序存储符合连续的内存,所以顺序存储可以被缓存处理,而链接存储并不是连续的,分散在堆中,所以只能内存去处理。
所以数组查询比链表要快。
而数组大小固定,插入和删除都需要移动元素,链表可以动态扩充,插入删除不需要移动元素,只需要更改元素中的指针。所以链表的插入删除比数组效率高。

多说一句:查询比数组快,删除插入效率又高的方式就是散列存储,散列是什么?散列的英文:hash

相关文章

  • 为什么数组查询比链表要快?而插入删除比链表效率低

    问:为什么数组查询比链表要快?而插入删除比链表效率低 已知: 1、数据存储结构分为顺序存储、链接存储、索引存储、散...

  • 数组,链表

    为什么数组查询比链表快?而插入删除比链表效率低? 顺序存储可以想象成吃饭排队,每个人领的号都是按顺序来的,服务员只...

  • Java集合类之HashMap源码学习笔记

    数组虽然可以随机访问,但插入和删除效率较低,链表虽然插入和删除效率较高,查找却只能通过遍历,而HashMap则基于...

  • 「数据结构与算法」笔记

    一 数组和链表的区别 数据结构在通过索引进行查询时效率比较高 ,而对于数组插入和删除操作,则效率会比较低。 数组优...

  • 链表 - LinkedList

    基本概念 链表和数组类似,但相比于数组,链表有动态大小。而且插入和删除的效率很高,只要O(1)的时间。但是链表的遍...

  • Java集合源码分析之Map(一):超级接口Map

    数组与链表在处理数据时各有优缺点,数组查询速度很快而插入很慢,链表在插入时表现优秀但查询无力。哈希表则整合了数组与...

  • 双向链表python实现

    python 双向链表实现 双向链表实现 链表头部添加 链表尾部添加 插入 删除 查询结点

  • 数据结构动画描述

    数组 插入数组插入 删除数组删除 链表 栈 队列 二分搜索树 插入

  • 链表

    链表和数组一样也支持查找,插入,删除操作。最常见的三种链表是:单链表,双链表和循环链表。 链表和数组的区别:数组需...

  • python数据结构——单链表

    链表 python实现链表链表的初始化创建元素的插入和删除链表的遍历元素的查询链表的删除链表的逆序判断链表是否有环...

网友评论

      本文标题:为什么数组查询比链表要快?而插入删除比链表效率低

      本文链接:https://www.haomeiwen.com/subject/xcwyjqtx.html