社区
Java SE
帖子详情
讨论帖:为什么数组的查询效率较高,增删的效率很低,而链表却刚好相反
super_loverax
2012-10-08 04:54:46
rt,大家一起来讨论下吧!
...全文
814
9
打赏
收藏
讨论帖:为什么数组的查询效率较高,增删的效率很低,而链表却刚好相反
rt,大家一起来讨论下吧!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
名字到底多长
2012-10-09
打赏
举报
回复
........
回个贴加点分下次问问题。
对于查找,ls说法都不全,你找之前根本不知道要找的元素位于链表或者数组的那一处地方,因此其实都是遍历操作,那表面上复杂度都是O(n)
真正的问题其实是 计算机组成原理 里讲的局部性原理,链表由于存放的地方在内存中是分散的,因此cpu的基地址寄存器等等必须重新赋值,而数组这一过程是不要的。因此对于查询来说,数组的效率更好。这也是
操作系统中,多个进程产生的多个PCB一般由数组实现的原因,尽管PCB修改删除过程很多。
wangdong20
2012-10-09
打赏
举报
回复
如果你知道插入排序过程,就好理解了!
郭梧悠
2012-10-09
打赏
举报
回复
因为数组增删的时候需要移动大量的数据,比如你在位置i删除一个元素,那么之后的元素都需要往前移动,所以效率低下,而链表就不存在这个问题。
lost_guy_in_scut
2012-10-08
打赏
举报
回复
有它本身的数据结构决定的,诚如一口所说。
hheeyyii
2012-10-08
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
因为数组有数组下标也就是序号,所以查询非常方便,只要你指定要哪个下标号码的值就行。
增删效率低也是因为需要维护这个序号。
链表不维护序号,所以增删直接操作,将前面指向他后面一个操作就完成了。但查询效率就低啊,得全链表扫描。
好像有道理哈。但是如果在一组乱序的数组中查找到某个数的位置,不知道下标的情况下,不都还得遍历整个数组和整个链表?
[/Quote]
是的,所以这种情况用hashmap之类的。可以快速定位。
daxiang253
2012-10-08
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
因为数组有数组下标也就是序号,所以查询非常方便,只要你指定要哪个下标号码的值就行。
增删效率低也是因为需要维护这个序号。
链表不维护序号,所以增删直接操作,将前面指向他后面一个操作就完成了。但查询效率就低啊,得全链表扫描。
[/Quote]
就是这个
super_loverax
2012-10-08
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
因为数组有数组下标也就是序号,所以查询非常方便,只要你指定要哪个下标号码的值就行。
增删效率低也是因为需要维护这个序号。
链表不维护序号,所以增删直接操作,将前面指向他后面一个操作就完成了。但查询效率就低啊,得全链表扫描。
[/Quote]
好像有道理哈。但是如果在一组乱序的数组中查找到某个数的位置,不知道下标的情况下,不都还得遍历整个数组和整个链表?
zxhcloth
2012-10-08
打赏
举报
回复
哈哈,这个还要讨论吗?
JavaNet的牛肉粉丝
2012-10-08
打赏
举报
回复
因为数组有数组下标也就是序号,所以查询非常方便,只要你指定要哪个下标号码的值就行。
增删效率低也是因为需要维护这个序号。
链表不维护序号,所以增删直接操作,将前面指向他后面一个操作就完成了。但查询效率就低啊,得全链表扫描。
链表
为什么删除插入快!
数组
为什么
查询
快!
因为
数组
结构是连续的内村地址,所以
数组
全部或者部分元素被连续被存在CPU缓存里面,而
链表
的节点是分散在堆空间里面的,这时候CPU缓存帮不上忙,只能是去读取内存,而缓存的速率要比内存快。 3、CPU --》寄存器--...
为什么说
链表
在插入和删除上
效率
要
高
于
数组
而
链表
不是连续存储,无法进行缓存,随机访问
效率
也较
低
。
数组
的缺点是大小固定,一经声明就要占用整块连续的内存空间。如果声明的
数组
过大,系统可能没有足够的连续内存空间用于分配,就会导致“内存不足(...
数组
和
链表
区别?为什么
链表
查找慢?
数组
查找快?为什么连续内存就方便查找?
优点:使用方便 ,
查询
效率
比
链表
高
,内存为一连续的区域 缺点:大小固定,不适合动态存储,不方便动态添加
链表
: 优点:可动态添加删除 大小可变 ,内存可能是不连续内存,链式存储。 缺点:只能通过顺次...
Java中HashMap底层为什么是
数组
链表
?
之前面试时问了HashMap的底层结构...这样的话,
链表
一长,在
链表
中
查询
的
效率
不是很
低
吗? 我:(哑了) 最近看到一个比较有依据的答案,在此做一下答复。 HashMap底层为什么是
数组
链表
呢?在
链表
中
查询
的
效率
不...
链表
为什么插入比
数组
快
而
链表
不是连续存储,无法进行缓存,随机访问
效率
也较
低
。
数组
的缺点是大小固定,一经声明就要占用整块连续的内存空间。如果声明的
数组
过大,系统可能没有足够的连续内存空间用于分配,就会导致“内存不足(ou...
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章