• 数组和链表


    一、数组

    是一组固定长度,相同类型元素的序列。

    二、链表

    链表中的元素可以存储在内存的任何地方。链表的每个元素都存储了下一个元素的地址,只要有内存就能增加新元素。

    这是用大O表示法对数组和连接的读取、插入、删除的对比

    操作 数组 链表
    读取 O(1) O(n)
    插入 O(n) O(1)
    删除 O(n) O(1)

     

     

     

    数组的特点是访问效率高,有两种访问方式:随机访问和顺序访问。众所周知,数组的每个元素都有下标(索引)标注其位置,因此无论是怎么访问都可以通过这个下标第一时间访问到目标元素。而链表先从第一个获取第二个的地址,再访问第二个获取第三个的地址,一次类推非常耗时。

    链表的优点是 插入数据快速,删除数据快。

    首先说插入数据,从上图可以看到,无论是从中间插入还是从尾部插入,都执行了两个地址的写入。上一个链条写入下一个的地址,被插入的链条写入下一个的地址,没有下一个则为null。所以他始终都只进行一步操作,因此算法复杂度记为O(1)。

    删除也是同样的道理,只需要上一个链条更新被删除的链条引用下一个的地址即可。

    而数组向指定坐标插入数据则会覆盖当前下标原来的值(链表会后移),否则则需要重新位移(原来所有的数据往后移动)和考虑下标是否越界的问题。删除更是麻烦,没有直接的方法甚至还需要自己重新组合删除后的数据。

    因此

    插入多,读取少。用链表。
    插入少,读取多。用数组。

    当然在实际应用中还是数组用的多,因为它的访问便利性。

  • 相关阅读:
    对象实例化内存布局与访问定位
    方法区

    本地方法栈
    本地方法接口
    虚拟机栈
    程序计数器
    运行时数据区概述及线程
    自学》2.网页弹窗计算商品价格
    自学》1.用网站发邮件
  • 原文地址:https://www.cnblogs.com/zeussbook/p/11135887.html
Copyright © 2020-2023  润新知