zoukankan      html  css  js  c++  java
  • 数组与链表增删改查效率比较

    转自:https://blog.csdn.net/qq_25186987/article/details/53886809

    1.只比较操作

    因为数组可以随机访问,所以它的查询和修改效率更高,但在增加删除元素时需要移动元素,所以效率低;

    链表只能顺序访问,所以它查询修改效率低,但是增加删除时只需修改指针指向就可以了,所以效率高。

    但是在增加和删除时,也包括查询的操作,上面并没有提到,所以到底是哪个数据结构更快呢?

    2.实验

    转自:https://blog.csdn.net/qq_25186987/article/details/53886809

    这个链接进行了实验,发现在总的长度增加时,还是数组的效率更高。

    得出结论:在靠前的位置插入数据,链表效率较高,在靠后位置插入数据,数组效率较高。

    另外评论区中提到,数组可能会存在容量不足重新申请空间+移动的问题,这个我也想到了,回复说,这个产生的机会是比较少的,扩容不是每次都触发,而且每次都会2倍扩容,和链表操作相比,并不特别影响效率。

    3. 理论分析

    转自:https://cloud.tencent.com/developer/article/1415172

    从内存管理角度:

    在OS中有不同的寄存器级别,速度越来越慢,针对数据来说,它是连续的一块空间,所以由于局部性原理,读取时会将它部分或者全部元素放入缓存中,而链表是分散在堆中间中的,不能方便地读取到缓存中,所以速度慢。

    所以总的来说,在CRAD方面,其实数组效率整体都高于链表的。

  • 相关阅读:
    tomcat最大连接数
    【转】性能测试总结---测试流程篇
    nginx访问量统计
    在Excel中计算过去某一天到今天一共多少天
    Linux服务器/etc/profile
    Linux服务器安装MySQL
    idea无法识别maven项目
    python3 实现RC4加解密
    Python实现128-ECB 解密
    BlowFish加解密原理与代码实现
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14506041.html
Copyright © 2011-2022 走看看