zoukankan      html  css  js  c++  java
  • 线性表

    1. 线性表概念(线性数据存储结构)

      相同类型的有限序列

      数据存储的本质是内存上的一个空间。

    2. 线性表的分类
      1. 顺序存储结构

        当数据存储时,不用记录数据的位置。直接找来内存中一整块空间,来依照顺序存储连续的一组数据,保证数据物理上的线性。

        数组,ArrayList(底层是动态数组)

      2. 链式存储结构

        当数据存储时,不用分配整块的空间,各个数据分配在不同的内存地址,只是存数据的同时,指向下一次存储的数据的位置(前驱和后继),保证数据逻辑上的线性。

        linkedList

    3. 顺序表和链表的区别

      参考:https://blog.csdn.net/qq_15037231/article/details/51816757  

      1.顺序表

        访问指定元素时无需从头遍历,通过计算便可获得对应地址,其时间复杂度为O(1)。

      扩充策略:

    • 每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长。

      特点:节省空间,但是扩充操作频繁,操作次数多。

    • 每次扩充容量加倍,如每次扩充增加一倍存储空间。

      特点:减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间,推荐的方式。2.

      面试题:

        ArrayList和LinkedList的区别(也是顺序表和链表的区别):

        (1)ArrayList是基于动态数组实现的,LinkedList是基于双向链表实现的。

        (2)ArrayList支持随机访问(通过下标),LinkedList不支持。

        (3)ArrayList的查询和尾部插入元素效率较高,中间插入和删除元素效率较低,因为有大量的数组复制操作。
          LinkedList的插入和删除效率较高,只需要把节点指针改变一下就行,但是查询效率较低,即使有双向链表的特性可以从两个方向查找,但还是需要使用蛮力法的方式进行遍历,所以效率较低。

        (4)ArrayList会造成一定的空间浪费,因为随时需要探测数组容量然后扩容;LinkedList通过节点方式进行存放数据,不存在空间浪费。

  • 相关阅读:
    异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
    【IntelliJ IDEA】使用idea解决新建jsp文件而找不到jsp文件模版的新建选项
    SpringBoot 上传附件
    SpringBoot访问资源文件
    springboot 整合 listener
    SpringBoot 整合 filter
    Hello_SpringBoot_demo
    springBoot 整合servlet
    RROR:o.s.b.d.LoggingFailureAnalysisReporter解决办法
    使用IDEA创建一个springboot项目
  • 原文地址:https://www.cnblogs.com/luruihua/p/11896943.html
Copyright © 2011-2022 走看看