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方面,其实数组效率整体都高于链表的。

  • 相关阅读:
    QOS-Qos标记和QOS-Policy策略
    QOS-CBQ概述
    QOS-基本拥塞管理机制(PQ CQ WFQ RTPQ)
    QOS-QOS(服务质量)概述
    MariaDB数据库服务
    24、配置Oracle下sqlplus历史命令的回调功能
    11、nginx+tomcat+redis_session共享
    9、make和make install的区别
    10、nginx+uwsgi+django部署(动静分离)
    15、iptables_nat目标地址转换(外网访问内网)
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14506041.html
Copyright © 2011-2022 走看看